diff --git a/TypeScript/23CustomAbstractChatBot/types/ErrorHandler.d.ts b/TypeScript/23CustomAbstractChatBot/types/ErrorHandler.d.ts index 69b0bcd..33c0de6 100644 --- a/TypeScript/23CustomAbstractChatBot/types/ErrorHandler.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/ErrorHandler.d.ts @@ -2,5 +2,5 @@ export declare class ErrorHandler { private logger; private readLine; constructor(); - handleCriticalError(err: any): void; + handleCriticalError(err: Error): void; } diff --git a/TypeScript/23CustomAbstractChatBot/types/Program.d.ts b/TypeScript/23CustomAbstractChatBot/types/Program.d.ts index afe5216..f2b65df 100644 --- a/TypeScript/23CustomAbstractChatBot/types/Program.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/Program.d.ts @@ -1,5 +1,5 @@ export declare class Program { private errorHandler; constructor(); - start(): void; + start(): Promise; } diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/AchievementCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/AchievementCallbacks.d.ts new file mode 100644 index 0000000..4fb7125 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/AchievementCallbacks.d.ts @@ -0,0 +1,21 @@ +import { AchievementController } from "@spt/controllers/AchievementController"; +import { ProfileController } from "@spt/controllers/ProfileController"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { ICompletedAchievementsResponse } from "@spt/models/eft/profile/ICompletedAchievementsResponse"; +import { IGetAchievementsResponse } from "@spt/models/eft/profile/IGetAchievementsResponse"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; +export declare class AchievementCallbacks { + protected achievementController: AchievementController; + protected profileController: ProfileController; + protected httpResponse: HttpResponseUtil; + constructor(achievementController: AchievementController, profileController: ProfileController, httpResponse: HttpResponseUtil); + /** + * Handle client/achievement/list + */ + getAchievements(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + /** + * Handle client/achievement/statistic + */ + statistic(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/BotCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/BotCallbacks.d.ts index d406147..7d22dcf 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/BotCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/BotCallbacks.d.ts @@ -1,9 +1,10 @@ -import { BotController } from "@spt-aki/controllers/BotController"; -import { IGenerateBotsRequestData } from "@spt-aki/models/eft/bot/IGenerateBotsRequestData"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IBotBase } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { BotController } from "@spt/controllers/BotController"; +import { IGenerateBotsRequestData } from "@spt/models/eft/bot/IGenerateBotsRequestData"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IBotBase } from "@spt/models/eft/common/tables/IBotBase"; +import { Difficulties } from "@spt/models/eft/common/tables/IBotType"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class BotCallbacks { protected botController: BotController; protected httpResponse: HttpResponseUtil; @@ -19,16 +20,21 @@ export declare class BotCallbacks { * @returns string */ getBotDifficulty(url: string, info: IEmptyRequestData, sessionID: string): string; + /** + * Handle singleplayer/settings/bot/difficulties + * @returns dictionary of every bot and its diffiulty settings + */ + getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; /** * Handle client/game/bot/generate * @returns IGetBodyResponseData */ - generateBots(url: string, info: IGenerateBotsRequestData, sessionID: string): IGetBodyResponseData; + generateBots(url: string, info: IGenerateBotsRequestData, sessionID: string): Promise>; /** * Handle singleplayer/settings/bot/maxCap * @returns string */ - getBotCap(): string; + getBotCap(url: string, info: any, sessionID: string): string; /** * Handle singleplayer/settings/bot/getBotBehaviours * @returns string diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/BuildsCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/BuildsCallbacks.d.ts new file mode 100644 index 0000000..79fee87 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/BuildsCallbacks.d.ts @@ -0,0 +1,34 @@ +import { BuildController } from "@spt/controllers/BuildController"; +import { ISetMagazineRequest } from "@spt/models/eft/builds/ISetMagazineRequest"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { INullResponseData } from "@spt/models/eft/httpResponse/INullResponseData"; +import { IPresetBuildActionRequestData } from "@spt/models/eft/presetBuild/IPresetBuildActionRequestData"; +import { IRemoveBuildRequestData } from "@spt/models/eft/presetBuild/IRemoveBuildRequestData"; +import { IUserBuilds } from "@spt/models/eft/profile/ISptProfile"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; +export declare class BuildsCallbacks { + protected httpResponse: HttpResponseUtil; + protected buildController: BuildController; + constructor(httpResponse: HttpResponseUtil, buildController: BuildController); + /** + * Handle client/builds/list + */ + getBuilds(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + /** + * Handle client/builds/magazine/save + */ + createMagazineTemplate(url: string, request: ISetMagazineRequest, sessionID: string): INullResponseData; + /** + * Handle client/builds/weapon/save + */ + setWeapon(url: string, info: IPresetBuildActionRequestData, sessionID: string): INullResponseData; + /** + * Handle client/builds/equipment/save + */ + setEquipment(url: string, info: IPresetBuildActionRequestData, sessionID: string): INullResponseData; + /** + * Handle client/builds/delete + */ + deleteBuild(url: string, info: IRemoveBuildRequestData, sessionID: string): INullResponseData; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/BundleCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/BundleCallbacks.d.ts index a49b8ec..3e579dc 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/BundleCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/BundleCallbacks.d.ts @@ -1,18 +1,13 @@ -import { BundleLoader } from "@spt-aki/loaders/BundleLoader"; -import { IHttpConfig } from "@spt-aki/models/spt/config/IHttpConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { HttpFileUtil } from "@spt-aki/utils/HttpFileUtil"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { BundleLoader } from "@spt/loaders/BundleLoader"; +import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class BundleCallbacks { - protected logger: ILogger; protected httpResponse: HttpResponseUtil; - protected httpFileUtil: HttpFileUtil; protected bundleLoader: BundleLoader; protected configServer: ConfigServer; protected httpConfig: IHttpConfig; - constructor(logger: ILogger, httpResponse: HttpResponseUtil, httpFileUtil: HttpFileUtil, bundleLoader: BundleLoader, configServer: ConfigServer); - sendBundle(sessionID: string, req: any, resp: any, body: any): void; + constructor(httpResponse: HttpResponseUtil, bundleLoader: BundleLoader, configServer: ConfigServer); /** * Handle singleplayer/bundles */ diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/ClientLogCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/ClientLogCallbacks.d.ts index 8414b49..bfeb9a4 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/ClientLogCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/ClientLogCallbacks.d.ts @@ -1,14 +1,28 @@ -import { ClientLogController } from "@spt-aki/controllers/ClientLogController"; -import { INullResponseData } from "@spt-aki/models/eft/httpResponse/INullResponseData"; -import { IClientLogRequest } from "@spt-aki/models/spt/logging/IClientLogRequest"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { ClientLogController } from "@spt/controllers/ClientLogController"; +import { ModLoadOrder } from "@spt/loaders/ModLoadOrder"; +import { INullResponseData } from "@spt/models/eft/httpResponse/INullResponseData"; +import { IClientLogRequest } from "@spt/models/spt/logging/IClientLogRequest"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; /** Handle client logging related events */ export declare class ClientLogCallbacks { protected httpResponse: HttpResponseUtil; protected clientLogController: ClientLogController; - constructor(httpResponse: HttpResponseUtil, clientLogController: ClientLogController); + protected configServer: ConfigServer; + protected localisationService: LocalisationService; + protected modLoadOrder: ModLoadOrder; + constructor(httpResponse: HttpResponseUtil, clientLogController: ClientLogController, configServer: ConfigServer, localisationService: LocalisationService, modLoadOrder: ModLoadOrder); /** * Handle /singleplayer/log */ clientLog(url: string, info: IClientLogRequest, sessionID: string): INullResponseData; + /** + * Handle /singleplayer/release + */ + releaseNotes(): string; + /** + * Handle /singleplayer/enableBSGlogging + */ + bsgLogging(): string; } diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/CustomizationCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/CustomizationCallbacks.d.ts index 9ea8faa..3541343 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/CustomizationCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/CustomizationCallbacks.d.ts @@ -1,14 +1,14 @@ -import { CustomizationController } from "@spt-aki/controllers/CustomizationController"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { ISuit } from "@spt-aki/models/eft/common/tables/ITrader"; -import { IBuyClothingRequestData } from "@spt-aki/models/eft/customization/IBuyClothingRequestData"; -import { IGetSuitsResponse } from "@spt-aki/models/eft/customization/IGetSuitsResponse"; -import { IWearClothingRequestData } from "@spt-aki/models/eft/customization/IWearClothingRequestData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { CustomizationController } from "@spt/controllers/CustomizationController"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { ISuit } from "@spt/models/eft/common/tables/ITrader"; +import { IBuyClothingRequestData } from "@spt/models/eft/customization/IBuyClothingRequestData"; +import { IGetSuitsResponse } from "@spt/models/eft/customization/IGetSuitsResponse"; +import { IWearClothingRequestData } from "@spt/models/eft/customization/IWearClothingRequestData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class CustomizationCallbacks { protected customizationController: CustomizationController; protected saveServer: SaveServer; diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/DataCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/DataCallbacks.d.ts index fbac60b..41f1d0c 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/DataCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/DataCallbacks.d.ts @@ -1,27 +1,31 @@ -import { HideoutController } from "@spt-aki/controllers/HideoutController"; -import { RagfairController } from "@spt-aki/controllers/RagfairController"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IGlobals } from "@spt-aki/models/eft/common/IGlobals"; -import { ICustomizationItem } from "@spt-aki/models/eft/common/tables/ICustomizationItem"; -import { IHandbookBase } from "@spt-aki/models/eft/common/tables/IHandbookBase"; -import { IGetItemPricesResponse } from "@spt-aki/models/eft/game/IGetItemPricesResponse"; -import { IHideoutArea } from "@spt-aki/models/eft/hideout/IHideoutArea"; -import { IHideoutProduction } from "@spt-aki/models/eft/hideout/IHideoutProduction"; -import { IHideoutScavCase } from "@spt-aki/models/eft/hideout/IHideoutScavCase"; -import { IHideoutSettingsBase } from "@spt-aki/models/eft/hideout/IHideoutSettingsBase"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { ISettingsBase } from "@spt-aki/models/spt/server/ISettingsBase"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { HideoutController } from "@spt/controllers/HideoutController"; +import { RagfairController } from "@spt/controllers/RagfairController"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IGlobals } from "@spt/models/eft/common/IGlobals"; +import { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomizationItem"; +import { IHandbookBase } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IGetItemPricesResponse } from "@spt/models/eft/game/IGetItemPricesResponse"; +import { IHideoutArea } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutScavCase } from "@spt/models/eft/hideout/IHideoutScavCase"; +import { IHideoutSettingsBase } from "@spt/models/eft/hideout/IHideoutSettingsBase"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { ISettingsBase } from "@spt/models/spt/server/ISettingsBase"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; /** * Handle client requests */ export declare class DataCallbacks { protected httpResponse: HttpResponseUtil; - protected databaseServer: DatabaseServer; + protected timeUtil: TimeUtil; + protected traderHelper: TraderHelper; + protected databaseService: DatabaseService; protected ragfairController: RagfairController; protected hideoutController: HideoutController; - constructor(httpResponse: HttpResponseUtil, databaseServer: DatabaseServer, ragfairController: RagfairController, hideoutController: HideoutController); + constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, ragfairController: RagfairController, hideoutController: HideoutController); /** * Handle client/settings * @returns ISettingsBase diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/DialogueCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/DialogueCallbacks.d.ts index 7ed60b9..baee279 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/DialogueCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/DialogueCallbacks.d.ts @@ -1,31 +1,36 @@ -import { DialogueController } from "@spt-aki/controllers/DialogueController"; -import { OnUpdate } from "@spt-aki/di/OnUpdate"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IAcceptFriendRequestData, ICancelFriendRequestData } from "@spt-aki/models/eft/dialog/IAcceptFriendRequestData"; -import { IChatServer } from "@spt-aki/models/eft/dialog/IChatServer"; -import { IClearMailMessageRequest } from "@spt-aki/models/eft/dialog/IClearMailMessageRequest"; -import { IDeleteFriendRequest } from "@spt-aki/models/eft/dialog/IDeleteFriendRequest"; -import { IFriendRequestData } from "@spt-aki/models/eft/dialog/IFriendRequestData"; -import { IFriendRequestSendResponse } from "@spt-aki/models/eft/dialog/IFriendRequestSendResponse"; -import { IGetAllAttachmentsRequestData } from "@spt-aki/models/eft/dialog/IGetAllAttachmentsRequestData"; -import { IGetAllAttachmentsResponse } from "@spt-aki/models/eft/dialog/IGetAllAttachmentsResponse"; -import { IGetChatServerListRequestData } from "@spt-aki/models/eft/dialog/IGetChatServerListRequestData"; -import { IGetFriendListDataResponse } from "@spt-aki/models/eft/dialog/IGetFriendListDataResponse"; -import { IGetMailDialogInfoRequestData } from "@spt-aki/models/eft/dialog/IGetMailDialogInfoRequestData"; -import { IGetMailDialogListRequestData } from "@spt-aki/models/eft/dialog/IGetMailDialogListRequestData"; -import { IGetMailDialogViewRequestData } from "@spt-aki/models/eft/dialog/IGetMailDialogViewRequestData"; -import { IGetMailDialogViewResponseData } from "@spt-aki/models/eft/dialog/IGetMailDialogViewResponseData"; -import { IPinDialogRequestData } from "@spt-aki/models/eft/dialog/IPinDialogRequestData"; -import { IRemoveDialogRequestData } from "@spt-aki/models/eft/dialog/IRemoveDialogRequestData"; -import { IRemoveMailMessageRequest } from "@spt-aki/models/eft/dialog/IRemoveMailMessageRequest"; -import { ISendMessageRequest } from "@spt-aki/models/eft/dialog/ISendMessageRequest"; -import { ISetDialogReadRequestData } from "@spt-aki/models/eft/dialog/ISetDialogReadRequestData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { INullResponseData } from "@spt-aki/models/eft/httpResponse/INullResponseData"; -import { DialogueInfo } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { DialogueController } from "@spt/controllers/DialogueController"; +import { OnUpdate } from "@spt/di/OnUpdate"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IUIDRequestData } from "@spt/models/eft/common/request/IUIDRequestData"; +import { IAcceptFriendRequestData, ICancelFriendRequestData, IDeclineFriendRequestData } from "@spt/models/eft/dialog/IAcceptFriendRequestData"; +import { IAddUserGroupMailRequest } from "@spt/models/eft/dialog/IAddUserGroupMailRequest"; +import { IChangeGroupMailOwnerRequest } from "@spt/models/eft/dialog/IChangeGroupMailOwnerRequest"; +import { IChatServer } from "@spt/models/eft/dialog/IChatServer"; +import { IClearMailMessageRequest } from "@spt/models/eft/dialog/IClearMailMessageRequest"; +import { ICreateGroupMailRequest } from "@spt/models/eft/dialog/ICreateGroupMailRequest"; +import { IDeleteFriendRequest } from "@spt/models/eft/dialog/IDeleteFriendRequest"; +import { IFriendRequestData } from "@spt/models/eft/dialog/IFriendRequestData"; +import { IFriendRequestSendResponse } from "@spt/models/eft/dialog/IFriendRequestSendResponse"; +import { IGetAllAttachmentsRequestData } from "@spt/models/eft/dialog/IGetAllAttachmentsRequestData"; +import { IGetAllAttachmentsResponse } from "@spt/models/eft/dialog/IGetAllAttachmentsResponse"; +import { IGetChatServerListRequestData } from "@spt/models/eft/dialog/IGetChatServerListRequestData"; +import { IGetFriendListDataResponse } from "@spt/models/eft/dialog/IGetFriendListDataResponse"; +import { IGetMailDialogInfoRequestData } from "@spt/models/eft/dialog/IGetMailDialogInfoRequestData"; +import { IGetMailDialogListRequestData } from "@spt/models/eft/dialog/IGetMailDialogListRequestData"; +import { IGetMailDialogViewRequestData } from "@spt/models/eft/dialog/IGetMailDialogViewRequestData"; +import { IGetMailDialogViewResponseData } from "@spt/models/eft/dialog/IGetMailDialogViewResponseData"; +import { IPinDialogRequestData } from "@spt/models/eft/dialog/IPinDialogRequestData"; +import { IRemoveDialogRequestData } from "@spt/models/eft/dialog/IRemoveDialogRequestData"; +import { IRemoveMailMessageRequest } from "@spt/models/eft/dialog/IRemoveMailMessageRequest"; +import { IRemoveUserGroupMailRequest } from "@spt/models/eft/dialog/IRemoveUserGroupMailRequest"; +import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; +import { ISetDialogReadRequestData } from "@spt/models/eft/dialog/ISetDialogReadRequestData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { INullResponseData } from "@spt/models/eft/httpResponse/INullResponseData"; +import { DialogueInfo } from "@spt/models/eft/profile/ISptProfile"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class DialogueCallbacks implements OnUpdate { protected hashUtil: HashUtil; protected timeUtil: TimeUtil; @@ -60,7 +65,7 @@ export declare class DialogueCallbacks implements OnUpdate { * Handle client/mail/dialog/getAllAttachments * @returns IGetAllAttachmentsResponse */ - getAllAttachments(url: string, info: IGetAllAttachmentsRequestData, sessionID: string): IGetBodyResponseData; + getAllAttachments(url: string, info: IGetAllAttachmentsRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/mail/msg/send */ sendMessage(url: string, request: ISendMessageRequest, sessionID: string): IGetBodyResponseData; /** Handle client/friend/request/list/outbox */ @@ -73,10 +78,18 @@ export declare class DialogueCallbacks implements OnUpdate { * Handle client/friend/request/send */ sendFriendRequest(url: string, request: IFriendRequestData, sessionID: string): IGetBodyResponseData; + /** + * Handle client/friend/request/accept-all + */ + acceptAllFriendRequests(url: string, request: IEmptyRequestData, sessionID: string): INullResponseData; /** * Handle client/friend/request/accept */ acceptFriendRequest(url: string, request: IAcceptFriendRequestData, sessionID: string): IGetBodyResponseData; + /** + * Handle client/friend/request/decline + */ + declineFriendRequest(url: string, request: IDeclineFriendRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/friend/request/cancel */ @@ -84,15 +97,15 @@ export declare class DialogueCallbacks implements OnUpdate { /** Handle client/friend/delete */ deleteFriend(url: string, request: IDeleteFriendRequest, sessionID: string): INullResponseData; /** Handle client/friend/ignore/set */ - ignoreFriend(url: string, request: { - uid: string; - }, sessionID: string): INullResponseData; + ignoreFriend(url: string, request: IUIDRequestData, sessionID: string): INullResponseData; /** Handle client/friend/ignore/remove */ - unIgnoreFriend(url: string, request: { - uid: string; - }, sessionID: string): INullResponseData; + unIgnoreFriend(url: string, request: IUIDRequestData, sessionID: string): INullResponseData; clearMail(url: string, request: IClearMailMessageRequest, sessionID: string): IGetBodyResponseData; removeMail(url: string, request: IRemoveMailMessageRequest, sessionID: string): IGetBodyResponseData; + createGroupMail(url: string, info: ICreateGroupMailRequest, sessionID: string): IGetBodyResponseData; + changeMailGroupOwner(url: string, info: IChangeGroupMailOwnerRequest, sessionID: string): IGetBodyResponseData; + addUserToMail(url: string, info: IAddUserGroupMailRequest, sessionID: string): IGetBodyResponseData; + removeUserFromMail(url: string, info: IRemoveUserGroupMailRequest, sessionID: string): IGetBodyResponseData; onUpdate(timeSinceLastRun: number): Promise; getRoute(): string; } diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/GameCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/GameCallbacks.d.ts index 09124c6..b41454f 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/GameCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/GameCallbacks.d.ts @@ -1,23 +1,25 @@ -import { GameController } from "@spt-aki/controllers/GameController"; -import { OnLoad } from "@spt-aki/di/OnLoad"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { ICheckVersionResponse } from "@spt-aki/models/eft/game/ICheckVersionResponse"; -import { ICurrentGroupResponse } from "@spt-aki/models/eft/game/ICurrentGroupResponse"; -import { IGameConfigResponse } from "@spt-aki/models/eft/game/IGameConfigResponse"; -import { IGameEmptyCrcRequestData } from "@spt-aki/models/eft/game/IGameEmptyCrcRequestData"; -import { IGameKeepAliveResponse } from "@spt-aki/models/eft/game/IGameKeepAliveResponse"; -import { IGameLogoutResponseData } from "@spt-aki/models/eft/game/IGameLogoutResponseData"; -import { IGameStartResponse } from "@spt-aki/models/eft/game/IGameStartResponse"; -import { IGetRaidTimeRequest } from "@spt-aki/models/eft/game/IGetRaidTimeRequest"; -import { IGetRaidTimeResponse } from "@spt-aki/models/eft/game/IGetRaidTimeResponse"; -import { IReportNicknameRequestData } from "@spt-aki/models/eft/game/IReportNicknameRequestData"; -import { IServerDetails } from "@spt-aki/models/eft/game/IServerDetails"; -import { IVersionValidateRequestData } from "@spt-aki/models/eft/game/IVersionValidateRequestData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { INullResponseData } from "@spt-aki/models/eft/httpResponse/INullResponseData"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -import { Watermark } from "@spt-aki/utils/Watermark"; +import { GameController } from "@spt/controllers/GameController"; +import { OnLoad } from "@spt/di/OnLoad"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IUIDRequestData } from "@spt/models/eft/common/request/IUIDRequestData"; +import { ICheckVersionResponse } from "@spt/models/eft/game/ICheckVersionResponse"; +import { ICurrentGroupResponse } from "@spt/models/eft/game/ICurrentGroupResponse"; +import { IGameConfigResponse } from "@spt/models/eft/game/IGameConfigResponse"; +import { IGameEmptyCrcRequestData } from "@spt/models/eft/game/IGameEmptyCrcRequestData"; +import { IGameKeepAliveResponse } from "@spt/models/eft/game/IGameKeepAliveResponse"; +import { IGameLogoutResponseData } from "@spt/models/eft/game/IGameLogoutResponseData"; +import { IGameModeRequestData } from "@spt/models/eft/game/IGameModeRequestData"; +import { IGameModeResponse } from "@spt/models/eft/game/IGameModeResponse"; +import { IGameStartResponse } from "@spt/models/eft/game/IGameStartResponse"; +import { IGetRaidTimeRequest } from "@spt/models/eft/game/IGetRaidTimeRequest"; +import { IGetRaidTimeResponse } from "@spt/models/eft/game/IGetRaidTimeResponse"; +import { IServerDetails } from "@spt/models/eft/game/IServerDetails"; +import { IVersionValidateRequestData } from "@spt/models/eft/game/IVersionValidateRequestData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { INullResponseData } from "@spt/models/eft/httpResponse/INullResponseData"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; +import { Watermark } from "@spt/utils/Watermark"; export declare class GameCallbacks implements OnLoad { protected httpResponse: HttpResponseUtil; protected watermark: Watermark; @@ -47,6 +49,11 @@ export declare class GameCallbacks implements OnLoad { * @returns IGameConfigResponse */ getGameConfig(url: string, info: IGameEmptyCrcRequestData, sessionID: string): IGetBodyResponseData; + /** + * Handle client/game/mode + * @returns IGameModeResponse + */ + getGameMode(url: string, info: IGameModeRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/server/list */ @@ -69,10 +76,10 @@ export declare class GameCallbacks implements OnLoad { * @returns string */ getVersion(url: string, info: IEmptyRequestData, sessionID: string): string; - reportNickname(url: string, info: IReportNicknameRequestData, sessionID: string): INullResponseData; + reportNickname(url: string, info: IUIDRequestData, sessionID: string): INullResponseData; /** - * Handle singleplayer/settings/getRaidTime - * @returns string - */ + * Handle singleplayer/settings/getRaidTime + * @returns string + */ getRaidTime(url: string, request: IGetRaidTimeRequest, sessionID: string): IGetRaidTimeResponse; } diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/HandbookCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/HandbookCallbacks.d.ts index 0a099e9..61819de 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/HandbookCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/HandbookCallbacks.d.ts @@ -1,5 +1,5 @@ -import { HandbookController } from "@spt-aki/controllers/HandbookController"; -import { OnLoad } from "@spt-aki/di/OnLoad"; +import { HandbookController } from "@spt/controllers/HandbookController"; +import { OnLoad } from "@spt/di/OnLoad"; export declare class HandbookCallbacks implements OnLoad { protected handbookController: HandbookController; constructor(handbookController: HandbookController); diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/HealthCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/HealthCallbacks.d.ts index 24b633b..840c9b1 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/HealthCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/HealthCallbacks.d.ts @@ -1,21 +1,21 @@ -import { HealthController } from "@spt-aki/controllers/HealthController"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IHealthTreatmentRequestData } from "@spt-aki/models/eft/health/IHealthTreatmentRequestData"; -import { IOffraidEatRequestData } from "@spt-aki/models/eft/health/IOffraidEatRequestData"; -import { IOffraidHealRequestData } from "@spt-aki/models/eft/health/IOffraidHealRequestData"; -import { ISyncHealthRequestData } from "@spt-aki/models/eft/health/ISyncHealthRequestData"; -import { IWorkoutData } from "@spt-aki/models/eft/health/IWorkoutData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { HealthController } from "@spt/controllers/HealthController"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IHealthTreatmentRequestData } from "@spt/models/eft/health/IHealthTreatmentRequestData"; +import { IOffraidEatRequestData } from "@spt/models/eft/health/IOffraidEatRequestData"; +import { IOffraidHealRequestData } from "@spt/models/eft/health/IOffraidHealRequestData"; +import { ISyncHealthRequestData } from "@spt/models/eft/health/ISyncHealthRequestData"; +import { IWorkoutData } from "@spt/models/eft/health/IWorkoutData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class HealthCallbacks { protected httpResponse: HttpResponseUtil; protected profileHelper: ProfileHelper; protected healthController: HealthController; constructor(httpResponse: HttpResponseUtil, profileHelper: ProfileHelper, healthController: HealthController); /** - * Custom aki server request found in modules/HealthSynchronizer.cs + * Custom spt server request found in modules/HealthSynchronizer.cs * @param url * @param info HealthListener.Instance.CurrentHealth class * @param sessionID session id @@ -23,7 +23,7 @@ export declare class HealthCallbacks { */ syncHealth(url: string, info: ISyncHealthRequestData, sessionID: string): IGetBodyResponseData; /** - * Custom aki server request found in modules/QTEPatch.cs + * Custom spt server request found in modules/QTEPatch.cs * @param url * @param info HealthListener.Instance.CurrentHealth class * @param sessionID session id diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/HideoutCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/HideoutCallbacks.d.ts index 65c989a..fadab9b 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/HideoutCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/HideoutCallbacks.d.ts @@ -1,22 +1,22 @@ -import { HideoutController } from "@spt-aki/controllers/HideoutController"; -import { OnUpdate } from "@spt-aki/di/OnUpdate"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IHandleQTEEventRequestData } from "@spt-aki/models/eft/hideout/IHandleQTEEventRequestData"; -import { IHideoutCancelProductionRequestData } from "@spt-aki/models/eft/hideout/IHideoutCancelProductionRequestData"; -import { IHideoutContinuousProductionStartRequestData } from "@spt-aki/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; -import { IHideoutImproveAreaRequestData } from "@spt-aki/models/eft/hideout/IHideoutImproveAreaRequestData"; -import { IHideoutPutItemInRequestData } from "@spt-aki/models/eft/hideout/IHideoutPutItemInRequestData"; -import { IHideoutScavCaseStartRequestData } from "@spt-aki/models/eft/hideout/IHideoutScavCaseStartRequestData"; -import { IHideoutSingleProductionStartRequestData } from "@spt-aki/models/eft/hideout/IHideoutSingleProductionStartRequestData"; -import { IHideoutTakeItemOutRequestData } from "@spt-aki/models/eft/hideout/IHideoutTakeItemOutRequestData"; -import { IHideoutTakeProductionRequestData } from "@spt-aki/models/eft/hideout/IHideoutTakeProductionRequestData"; -import { IHideoutToggleAreaRequestData } from "@spt-aki/models/eft/hideout/IHideoutToggleAreaRequestData"; -import { IHideoutUpgradeCompleteRequestData } from "@spt-aki/models/eft/hideout/IHideoutUpgradeCompleteRequestData"; -import { IHideoutUpgradeRequestData } from "@spt-aki/models/eft/hideout/IHideoutUpgradeRequestData"; -import { IRecordShootingRangePoints } from "@spt-aki/models/eft/hideout/IRecordShootingRangePoints"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IHideoutConfig } from "@spt-aki/models/spt/config/IHideoutConfig"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; +import { HideoutController } from "@spt/controllers/HideoutController"; +import { OnUpdate } from "@spt/di/OnUpdate"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IHandleQTEEventRequestData } from "@spt/models/eft/hideout/IHandleQTEEventRequestData"; +import { IHideoutCancelProductionRequestData } from "@spt/models/eft/hideout/IHideoutCancelProductionRequestData"; +import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; +import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; +import { IHideoutScavCaseStartRequestData } from "@spt/models/eft/hideout/IHideoutScavCaseStartRequestData"; +import { IHideoutSingleProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutSingleProductionStartRequestData"; +import { IHideoutTakeItemOutRequestData } from "@spt/models/eft/hideout/IHideoutTakeItemOutRequestData"; +import { IHideoutTakeProductionRequestData } from "@spt/models/eft/hideout/IHideoutTakeProductionRequestData"; +import { IHideoutToggleAreaRequestData } from "@spt/models/eft/hideout/IHideoutToggleAreaRequestData"; +import { IHideoutUpgradeCompleteRequestData } from "@spt/models/eft/hideout/IHideoutUpgradeCompleteRequestData"; +import { IHideoutUpgradeRequestData } from "@spt/models/eft/hideout/IHideoutUpgradeRequestData"; +import { IRecordShootingRangePoints } from "@spt/models/eft/hideout/IRecordShootingRangePoints"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; export declare class HideoutCallbacks implements OnUpdate { protected hideoutController: HideoutController; protected configServer: ConfigServer; @@ -26,11 +26,11 @@ export declare class HideoutCallbacks implements OnUpdate { /** * Handle HideoutUpgrade event */ - upgrade(pmcData: IPmcData, body: IHideoutUpgradeRequestData, sessionID: string): IItemEventRouterResponse; + upgrade(pmcData: IPmcData, body: IHideoutUpgradeRequestData, sessionID: string, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * Handle HideoutUpgradeComplete event */ - upgradeComplete(pmcData: IPmcData, body: IHideoutUpgradeCompleteRequestData, sessionID: string): IItemEventRouterResponse; + upgradeComplete(pmcData: IPmcData, body: IHideoutUpgradeCompleteRequestData, sessionID: string, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * Handle HideoutPutItemsInAreaSlots */ @@ -62,11 +62,11 @@ export declare class HideoutCallbacks implements OnUpdate { /** * Handle HideoutQuickTimeEvent */ - handleQTEEvent(pmcData: IPmcData, request: IHandleQTEEventRequestData, sessionId: string): IItemEventRouterResponse; + handleQTEEvent(pmcData: IPmcData, request: IHandleQTEEventRequestData, sessionId: string, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * Handle client/game/profile/items/moving - RecordShootingRangePoints */ - recordShootingRangePoints(pmcData: IPmcData, request: IRecordShootingRangePoints, sessionId: string): IItemEventRouterResponse; + recordShootingRangePoints(pmcData: IPmcData, request: IRecordShootingRangePoints, sessionId: string, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * Handle client/game/profile/items/moving - RecordShootingRangePoints */ diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/HttpCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/HttpCallbacks.d.ts index 060301a..11b2db5 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/HttpCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/HttpCallbacks.d.ts @@ -1,5 +1,5 @@ -import { OnLoad } from "@spt-aki/di/OnLoad"; -import { HttpServer } from "@spt-aki/servers/HttpServer"; +import { OnLoad } from "@spt/di/OnLoad"; +import { HttpServer } from "@spt/servers/HttpServer"; export declare class HttpCallbacks implements OnLoad { protected httpServer: HttpServer; constructor(httpServer: HttpServer); diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/InraidCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/InraidCallbacks.d.ts index ea77d62..dc6ede4 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/InraidCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/InraidCallbacks.d.ts @@ -1,8 +1,10 @@ -import { InraidController } from "@spt-aki/controllers/InraidController"; -import { INullResponseData } from "@spt-aki/models/eft/httpResponse/INullResponseData"; -import { IRegisterPlayerRequestData } from "@spt-aki/models/eft/inRaid/IRegisterPlayerRequestData"; -import { ISaveProgressRequestData } from "@spt-aki/models/eft/inRaid/ISaveProgressRequestData"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { InraidController } from "@spt/controllers/InraidController"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { INullResponseData } from "@spt/models/eft/httpResponse/INullResponseData"; +import { IItemDeliveryRequestData } from "@spt/models/eft/inRaid/IItemDeliveryRequestData"; +import { IRegisterPlayerRequestData } from "@spt/models/eft/inRaid/IRegisterPlayerRequestData"; +import { ISaveProgressRequestData } from "@spt/models/eft/inRaid/ISaveProgressRequestData"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; /** * Handle client requests */ @@ -37,14 +39,25 @@ export declare class InraidCallbacks { * @returns JSON as string */ getRaidMenuSettings(): string; - /** - * Handle singleplayer/settings/weapon/durability - * @returns - */ - getWeaponDurability(): string; /** * Handle singleplayer/airdrop/config * @returns JSON as string */ getAirdropConfig(): string; + /** + * Handle singleplayer/btr/config + * @returns JSON as string + */ + getBTRConfig(): string; + /** + * Handle singleplayer/traderServices/getTraderServices + */ + getTraderServices(url: string, info: IEmptyRequestData, sessionId: string): string; + /** + * Handle singleplayer/traderServices/itemDelivery + */ + itemDelivery(url: string, request: IItemDeliveryRequestData, sessionId: string): INullResponseData; + getTraitorScavHostileChance(url: string, info: IEmptyRequestData, sessionId: string): string; + getSandboxMaxPatrolValue(url: string, info: IEmptyRequestData, sessionId: string): string; + getBossConvertSettings(url: string, info: IEmptyRequestData, sessionId: string): string; } diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/InsuranceCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/InsuranceCallbacks.d.ts index 1c57629..888f128 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/InsuranceCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/InsuranceCallbacks.d.ts @@ -1,15 +1,15 @@ -import { InsuranceController } from "@spt-aki/controllers/InsuranceController"; -import { OnUpdate } from "@spt-aki/di/OnUpdate"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { IGetInsuranceCostRequestData } from "@spt-aki/models/eft/insurance/IGetInsuranceCostRequestData"; -import { IGetInsuranceCostResponseData } from "@spt-aki/models/eft/insurance/IGetInsuranceCostResponseData"; -import { IInsureRequestData } from "@spt-aki/models/eft/insurance/IInsureRequestData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IInsuranceConfig } from "@spt-aki/models/spt/config/IInsuranceConfig"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { InsuranceService } from "@spt-aki/services/InsuranceService"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { InsuranceController } from "@spt/controllers/InsuranceController"; +import { OnUpdate } from "@spt/di/OnUpdate"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { IGetInsuranceCostRequestData } from "@spt/models/eft/insurance/IGetInsuranceCostRequestData"; +import { IGetInsuranceCostResponseData } from "@spt/models/eft/insurance/IGetInsuranceCostResponseData"; +import { IInsureRequestData } from "@spt/models/eft/insurance/IInsureRequestData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IInsuranceConfig } from "@spt/models/spt/config/IInsuranceConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { InsuranceService } from "@spt/services/InsuranceService"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class InsuranceCallbacks implements OnUpdate { protected insuranceController: InsuranceController; protected insuranceService: InsuranceService; diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/InventoryCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/InventoryCallbacks.d.ts index ddbb070..e0968e6 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/InventoryCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/InventoryCallbacks.d.ts @@ -1,51 +1,61 @@ -import { InventoryController } from "@spt-aki/controllers/InventoryController"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IInventoryBindRequestData } from "@spt-aki/models/eft/inventory/IInventoryBindRequestData"; -import { IInventoryCreateMarkerRequestData } from "@spt-aki/models/eft/inventory/IInventoryCreateMarkerRequestData"; -import { IInventoryDeleteMarkerRequestData } from "@spt-aki/models/eft/inventory/IInventoryDeleteMarkerRequestData"; -import { IInventoryEditMarkerRequestData } from "@spt-aki/models/eft/inventory/IInventoryEditMarkerRequestData"; -import { IInventoryExamineRequestData } from "@spt-aki/models/eft/inventory/IInventoryExamineRequestData"; -import { IInventoryFoldRequestData } from "@spt-aki/models/eft/inventory/IInventoryFoldRequestData"; -import { IInventoryMergeRequestData } from "@spt-aki/models/eft/inventory/IInventoryMergeRequestData"; -import { IInventoryMoveRequestData } from "@spt-aki/models/eft/inventory/IInventoryMoveRequestData"; -import { IInventoryReadEncyclopediaRequestData } from "@spt-aki/models/eft/inventory/IInventoryReadEncyclopediaRequestData"; -import { IInventoryRemoveRequestData } from "@spt-aki/models/eft/inventory/IInventoryRemoveRequestData"; -import { IInventorySortRequestData } from "@spt-aki/models/eft/inventory/IInventorySortRequestData"; -import { IInventorySplitRequestData } from "@spt-aki/models/eft/inventory/IInventorySplitRequestData"; -import { IInventorySwapRequestData } from "@spt-aki/models/eft/inventory/IInventorySwapRequestData"; -import { IInventoryTagRequestData } from "@spt-aki/models/eft/inventory/IInventoryTagRequestData"; -import { IInventoryToggleRequestData } from "@spt-aki/models/eft/inventory/IInventoryToggleRequestData"; -import { IInventoryTransferRequestData } from "@spt-aki/models/eft/inventory/IInventoryTransferRequestData"; -import { IOpenRandomLootContainerRequestData } from "@spt-aki/models/eft/inventory/IOpenRandomLootContainerRequestData"; -import { IRedeemProfileRequestData } from "@spt-aki/models/eft/inventory/IRedeemProfileRequestData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; +import { InventoryController } from "@spt/controllers/InventoryController"; +import { QuestController } from "@spt/controllers/QuestController"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IInventoryBindRequestData } from "@spt/models/eft/inventory/IInventoryBindRequestData"; +import { IInventoryCreateMarkerRequestData } from "@spt/models/eft/inventory/IInventoryCreateMarkerRequestData"; +import { IInventoryDeleteMarkerRequestData } from "@spt/models/eft/inventory/IInventoryDeleteMarkerRequestData"; +import { IInventoryEditMarkerRequestData } from "@spt/models/eft/inventory/IInventoryEditMarkerRequestData"; +import { IInventoryExamineRequestData } from "@spt/models/eft/inventory/IInventoryExamineRequestData"; +import { IInventoryFoldRequestData } from "@spt/models/eft/inventory/IInventoryFoldRequestData"; +import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData"; +import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData"; +import { IInventoryReadEncyclopediaRequestData } from "@spt/models/eft/inventory/IInventoryReadEncyclopediaRequestData"; +import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData"; +import { IInventorySortRequestData } from "@spt/models/eft/inventory/IInventorySortRequestData"; +import { IInventorySplitRequestData } from "@spt/models/eft/inventory/IInventorySplitRequestData"; +import { IInventorySwapRequestData } from "@spt/models/eft/inventory/IInventorySwapRequestData"; +import { IInventoryTagRequestData } from "@spt/models/eft/inventory/IInventoryTagRequestData"; +import { IInventoryToggleRequestData } from "@spt/models/eft/inventory/IInventoryToggleRequestData"; +import { IInventoryTransferRequestData } from "@spt/models/eft/inventory/IInventoryTransferRequestData"; +import { IOpenRandomLootContainerRequestData } from "@spt/models/eft/inventory/IOpenRandomLootContainerRequestData"; +import { IRedeemProfileRequestData } from "@spt/models/eft/inventory/IRedeemProfileRequestData"; +import { ISetFavoriteItems } from "@spt/models/eft/inventory/ISetFavoriteItems"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IFailQuestRequestData } from "@spt/models/eft/quests/IFailQuestRequestData"; export declare class InventoryCallbacks { protected inventoryController: InventoryController; - constructor(inventoryController: InventoryController); - /** Handle Move event */ - moveItem(pmcData: IPmcData, body: IInventoryMoveRequestData, sessionID: string): IItemEventRouterResponse; + protected questController: QuestController; + constructor(inventoryController: InventoryController, questController: QuestController); + /** Handle client/game/profile/items/moving Move event */ + moveItem(pmcData: IPmcData, body: IInventoryMoveRequestData, sessionID: string, output: IItemEventRouterResponse): IItemEventRouterResponse; /** Handle Remove event */ - removeItem(pmcData: IPmcData, body: IInventoryRemoveRequestData, sessionID: string): IItemEventRouterResponse; + removeItem(pmcData: IPmcData, body: IInventoryRemoveRequestData, sessionID: string, output: IItemEventRouterResponse): IItemEventRouterResponse; /** Handle Split event */ - splitItem(pmcData: IPmcData, body: IInventorySplitRequestData, sessionID: string): IItemEventRouterResponse; - mergeItem(pmcData: IPmcData, body: IInventoryMergeRequestData, sessionID: string): IItemEventRouterResponse; - transferItem(pmcData: IPmcData, body: IInventoryTransferRequestData, sessionID: string): IItemEventRouterResponse; + splitItem(pmcData: IPmcData, body: IInventorySplitRequestData, sessionID: string, output: IItemEventRouterResponse): IItemEventRouterResponse; + mergeItem(pmcData: IPmcData, body: IInventoryMergeRequestData, sessionID: string, output: IItemEventRouterResponse): IItemEventRouterResponse; + transferItem(pmcData: IPmcData, request: IInventoryTransferRequestData, sessionID: string, output: IItemEventRouterResponse): IItemEventRouterResponse; /** Handle Swap */ swapItem(pmcData: IPmcData, body: IInventorySwapRequestData, sessionID: string): IItemEventRouterResponse; foldItem(pmcData: IPmcData, body: IInventoryFoldRequestData, sessionID: string): IItemEventRouterResponse; toggleItem(pmcData: IPmcData, body: IInventoryToggleRequestData, sessionID: string): IItemEventRouterResponse; tagItem(pmcData: IPmcData, body: IInventoryTagRequestData, sessionID: string): IItemEventRouterResponse; - bindItem(pmcData: IPmcData, body: IInventoryBindRequestData, sessionID: string): IItemEventRouterResponse; - unbindItem(pmcData: IPmcData, body: IInventoryBindRequestData, sessionID: string): IItemEventRouterResponse; - examineItem(pmcData: IPmcData, body: IInventoryExamineRequestData, sessionID: string): IItemEventRouterResponse; + bindItem(pmcData: IPmcData, body: IInventoryBindRequestData, sessionID: string, output: IItemEventRouterResponse): IItemEventRouterResponse; + unbindItem(pmcData: IPmcData, body: IInventoryBindRequestData, sessionID: string, output: IItemEventRouterResponse): IItemEventRouterResponse; + examineItem(pmcData: IPmcData, body: IInventoryExamineRequestData, sessionID: string, output: IItemEventRouterResponse): IItemEventRouterResponse; /** Handle ReadEncyclopedia */ readEncyclopedia(pmcData: IPmcData, body: IInventoryReadEncyclopediaRequestData, sessionID: string): IItemEventRouterResponse; /** Handle ApplyInventoryChanges */ - sortInventory(pmcData: IPmcData, body: IInventorySortRequestData, sessionID: string): IItemEventRouterResponse; - createMapMarker(pmcData: IPmcData, body: IInventoryCreateMarkerRequestData, sessionID: string): IItemEventRouterResponse; - deleteMapMarker(pmcData: IPmcData, body: IInventoryDeleteMarkerRequestData, sessionID: string): IItemEventRouterResponse; - editMapMarker(pmcData: IPmcData, body: IInventoryEditMarkerRequestData, sessionID: string): IItemEventRouterResponse; + sortInventory(pmcData: IPmcData, body: IInventorySortRequestData, sessionID: string, output: IItemEventRouterResponse): IItemEventRouterResponse; + createMapMarker(pmcData: IPmcData, body: IInventoryCreateMarkerRequestData, sessionID: string, output: IItemEventRouterResponse): IItemEventRouterResponse; + deleteMapMarker(pmcData: IPmcData, body: IInventoryDeleteMarkerRequestData, sessionID: string, output: IItemEventRouterResponse): IItemEventRouterResponse; + editMapMarker(pmcData: IPmcData, body: IInventoryEditMarkerRequestData, sessionID: string, output: IItemEventRouterResponse): IItemEventRouterResponse; /** Handle OpenRandomLootContainer */ - openRandomLootContainer(pmcData: IPmcData, body: IOpenRandomLootContainerRequestData, sessionID: string): IItemEventRouterResponse; - redeemProfileReward(pmcData: IPmcData, body: IRedeemProfileRequestData, sessionId: string): IItemEventRouterResponse; + openRandomLootContainer(pmcData: IPmcData, body: IOpenRandomLootContainerRequestData, sessionID: string, output: IItemEventRouterResponse): IItemEventRouterResponse; + redeemProfileReward(pmcData: IPmcData, body: IRedeemProfileRequestData, sessionId: string, output: IItemEventRouterResponse): IItemEventRouterResponse; + setFavoriteItem(pmcData: IPmcData, body: ISetFavoriteItems, sessionId: string, output: IItemEventRouterResponse): IItemEventRouterResponse; + /** + * TODO - MOVE INTO QUEST CODE + * Handle game/profile/items/moving - QuestFail + */ + failQuest(pmcData: IPmcData, request: IFailQuestRequestData, sessionID: string, output: IItemEventRouterResponse): IItemEventRouterResponse; } diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/ItemEventCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/ItemEventCallbacks.d.ts index b040607..2d42ae3 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/ItemEventCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/ItemEventCallbacks.d.ts @@ -1,13 +1,19 @@ -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { Warning } from "@spt-aki/models/eft/itemEvent/IItemEventRouterBase"; -import { IItemEventRouterRequest } from "@spt-aki/models/eft/itemEvent/IItemEventRouterRequest"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { ItemEventRouter } from "@spt-aki/routers/ItemEventRouter"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { Warning } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; +import { IItemEventRouterRequest } from "@spt/models/eft/itemEvent/IItemEventRouterRequest"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { ItemEventRouter } from "@spt/routers/ItemEventRouter"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class ItemEventCallbacks { protected httpResponse: HttpResponseUtil; protected itemEventRouter: ItemEventRouter; constructor(httpResponse: HttpResponseUtil, itemEventRouter: ItemEventRouter); - handleEvents(url: string, info: IItemEventRouterRequest, sessionID: string): IGetBodyResponseData; + handleEvents(url: string, info: IItemEventRouterRequest, sessionID: string): Promise>; + /** + * Return true if the passed in list of warnings contains critical issues + * @param warnings The list of warnings to check for critical errors + * @returns + */ + private isCriticalError; protected getErrorCode(warnings: Warning[]): number; } diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/LauncherCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/LauncherCallbacks.d.ts index b452291..46fb3f4 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/LauncherCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/LauncherCallbacks.d.ts @@ -1,12 +1,12 @@ -import { LauncherController } from "@spt-aki/controllers/LauncherController"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IChangeRequestData } from "@spt-aki/models/eft/launcher/IChangeRequestData"; -import { ILoginRequestData } from "@spt-aki/models/eft/launcher/ILoginRequestData"; -import { IRegisterData } from "@spt-aki/models/eft/launcher/IRegisterData"; -import { IRemoveProfileData } from "@spt-aki/models/eft/launcher/IRemoveProfileData"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -import { Watermark } from "@spt-aki/utils/Watermark"; +import { LauncherController } from "@spt/controllers/LauncherController"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IChangeRequestData } from "@spt/models/eft/launcher/IChangeRequestData"; +import { ILoginRequestData } from "@spt/models/eft/launcher/ILoginRequestData"; +import { IRegisterData } from "@spt/models/eft/launcher/IRegisterData"; +import { IRemoveProfileData } from "@spt/models/eft/launcher/IRemoveProfileData"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; +import { Watermark } from "@spt/utils/Watermark"; export declare class LauncherCallbacks { protected httpResponse: HttpResponseUtil; protected launcherController: LauncherController; diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/LocationCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/LocationCallbacks.d.ts index a370219..2825050 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/LocationCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/LocationCallbacks.d.ts @@ -1,10 +1,10 @@ -import { LocationController } from "@spt-aki/controllers/LocationController"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { ILocationBase } from "@spt-aki/models/eft/common/ILocationBase"; -import { ILocationsGenerateAllResponse } from "@spt-aki/models/eft/common/ILocationsSourceDestinationBase"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { IGetLocationRequestData } from "@spt-aki/models/eft/location/IGetLocationRequestData"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { LocationController } from "@spt/controllers/LocationController"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { ILocationsGenerateAllResponse } from "@spt/models/eft/common/ILocationsSourceDestinationBase"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { IGetLocationRequestData } from "@spt/models/eft/location/IGetLocationRequestData"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class LocationCallbacks { protected httpResponse: HttpResponseUtil; protected locationController: LocationController; diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/MatchCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/MatchCallbacks.d.ts index a6f2ccf..73f7564 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/MatchCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/MatchCallbacks.d.ts @@ -1,74 +1,76 @@ -import { MatchController } from "@spt-aki/controllers/MatchController"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { INullResponseData } from "@spt-aki/models/eft/httpResponse/INullResponseData"; -import { IAcceptGroupInviteRequest } from "@spt-aki/models/eft/match/IAcceptGroupInviteRequest"; -import { IAcceptGroupInviteResponse } from "@spt-aki/models/eft/match/IAcceptGroupInviteResponse"; -import { ICancelGroupInviteRequest } from "@spt-aki/models/eft/match/ICancelGroupInviteRequest"; -import { ICreateGroupRequestData } from "@spt-aki/models/eft/match/ICreateGroupRequestData"; -import { IEndOfflineRaidRequestData } from "@spt-aki/models/eft/match/IEndOfflineRaidRequestData"; -import { IGetGroupStatusRequestData } from "@spt-aki/models/eft/match/IGetGroupStatusRequestData"; -import { IGetGroupStatusResponse } from "@spt-aki/models/eft/match/IGetGroupStatusResponse"; -import { IGetProfileRequestData } from "@spt-aki/models/eft/match/IGetProfileRequestData"; -import { IGetRaidConfigurationRequestData } from "@spt-aki/models/eft/match/IGetRaidConfigurationRequestData"; -import { IJoinMatchRequestData } from "@spt-aki/models/eft/match/IJoinMatchRequestData"; -import { IJoinMatchResult } from "@spt-aki/models/eft/match/IJoinMatchResult"; -import { IPutMetricsRequestData } from "@spt-aki/models/eft/match/IPutMetricsRequestData"; -import { IRemovePlayerFromGroupRequest } from "@spt-aki/models/eft/match/IRemovePlayerFromGroupRequest"; -import { ISendGroupInviteRequest } from "@spt-aki/models/eft/match/ISendGroupInviteRequest"; -import { ITransferGroupRequest } from "@spt-aki/models/eft/match/ITransferGroupRequest"; -import { IUpdatePingRequestData } from "@spt-aki/models/eft/match/IUpdatePingRequestData"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; +import { MatchController } from "@spt/controllers/MatchController"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { INullResponseData } from "@spt/models/eft/httpResponse/INullResponseData"; +import { IEndOfflineRaidRequestData } from "@spt/models/eft/match/IEndOfflineRaidRequestData"; +import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; +import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; +import { IMatchGroupCurrentResponse } from "@spt/models/eft/match/IMatchGroupCurrentResponse"; +import { IMatchGroupInviteSendRequest } from "@spt/models/eft/match/IMatchGroupInviteSendRequest"; +import { IMatchGroupPlayerRemoveRequest } from "@spt/models/eft/match/IMatchGroupPlayerRemoveRequest"; +import { IMatchGroupStartGameRequest } from "@spt/models/eft/match/IMatchGroupStartGameRequest"; +import { IMatchGroupStatusRequest } from "@spt/models/eft/match/IMatchGroupStatusRequest"; +import { IMatchGroupStatusResponse } from "@spt/models/eft/match/IMatchGroupStatusResponse"; +import { IMatchGroupTransferRequest } from "@spt/models/eft/match/IMatchGroupTransferRequest"; +import { IProfileStatusResponse } from "@spt/models/eft/match/IProfileStatusResponse"; +import { IPutMetricsRequestData } from "@spt/models/eft/match/IPutMetricsRequestData"; +import { IRequestIdRequest } from "@spt/models/eft/match/IRequestIdRequest"; +import { IUpdatePingRequestData } from "@spt/models/eft/match/IUpdatePingRequestData"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; +import { JsonUtil } from "@spt/utils/JsonUtil"; export declare class MatchCallbacks { protected httpResponse: HttpResponseUtil; protected jsonUtil: JsonUtil; protected matchController: MatchController; - protected databaseServer: DatabaseServer; - constructor(httpResponse: HttpResponseUtil, jsonUtil: JsonUtil, matchController: MatchController, databaseServer: DatabaseServer); + protected databaseService: DatabaseService; + constructor(httpResponse: HttpResponseUtil, jsonUtil: JsonUtil, matchController: MatchController, databaseService: DatabaseService); /** Handle client/match/updatePing */ updatePing(url: string, info: IUpdatePingRequestData, sessionID: string): INullResponseData; exitMatch(url: string, info: IEmptyRequestData, sessionID: string): INullResponseData; /** Handle client/match/group/exit_from_menu */ exitToMenu(url: string, info: IEmptyRequestData, sessionID: string): INullResponseData; + groupCurrent(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; startGroupSearch(url: string, info: IEmptyRequestData, sessionID: string): INullResponseData; stopGroupSearch(url: string, info: IEmptyRequestData, sessionID: string): INullResponseData; /** Handle client/match/group/invite/send */ - sendGroupInvite(url: string, info: ISendGroupInviteRequest, sessionID: string): IGetBodyResponseData; + sendGroupInvite(url: string, info: IMatchGroupInviteSendRequest, sessionID: string): IGetBodyResponseData; /** Handle client/match/group/invite/accept */ - acceptGroupInvite(url: string, info: IAcceptGroupInviteRequest, sessionID: string): IGetBodyResponseData; + acceptGroupInvite(url: string, info: IRequestIdRequest, sessionId: string): IGetBodyResponseData; + /** Handle client/match/group/invite/decline */ + declineGroupInvite(url: string, info: IRequestIdRequest, sessionId: string): IGetBodyResponseData; /** Handle client/match/group/invite/cancel */ - cancelGroupInvite(url: string, info: ICancelGroupInviteRequest, sessionID: string): IGetBodyResponseData; + cancelGroupInvite(url: string, info: IRequestIdRequest, sessionID: string): IGetBodyResponseData; /** Handle client/match/group/transfer */ - transferGroup(url: string, info: ITransferGroupRequest, sessionID: string): IGetBodyResponseData; + transferGroup(url: string, info: IMatchGroupTransferRequest, sessionId: string): IGetBodyResponseData; /** Handle client/match/group/invite/cancel-all */ - cancelAllGroupInvite(url: string, info: any, sessionID: string): INullResponseData; + cancelAllGroupInvite(url: string, info: IEmptyRequestData, sessionId: string): IGetBodyResponseData; /** @deprecated - not called on raid start/end or game start/exit */ - putMetrics(url: string, info: IPutMetricsRequestData, sessionID: string): INullResponseData; - /** Handle raid/profile/list */ - getProfile(url: string, info: IGetProfileRequestData, sessionID: string): IGetBodyResponseData; - serverAvailable(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + putMetrics(url: string, info: IPutMetricsRequestData, sessionId: string): INullResponseData; + serverAvailable(url: string, info: IEmptyRequestData, sessionId: string): IGetBodyResponseData; /** Handle match/group/start_game */ - joinMatch(url: string, info: IJoinMatchRequestData, sessionID: string): IGetBodyResponseData; + joinMatch(url: string, info: IMatchGroupStartGameRequest, sessionID: string): IGetBodyResponseData; /** Handle client/getMetricsConfig */ getMetrics(url: string, info: any, sessionID: string): IGetBodyResponseData; /** - * @deprecated - not called on raid start/end or game start/exit + * Called periodically while in a group * Handle client/match/group/status * @returns */ - getGroupStatus(url: string, info: IGetGroupStatusRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/match/group/create */ - createGroup(url: string, info: ICreateGroupRequestData, sessionID: string): IGetBodyResponseData; + getGroupStatus(url: string, info: IMatchGroupStatusRequest, sessionID: string): IGetBodyResponseData; /** Handle client/match/group/delete */ - deleteGroup(url: string, info: any, sessionID: string): INullResponseData; + deleteGroup(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; leaveGroup(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/match/group/player/remove */ - removePlayerFromGroup(url: string, info: IRemovePlayerFromGroupRequest, sessionID: string): INullResponseData; + removePlayerFromGroup(url: string, info: IMatchGroupPlayerRemoveRequest, sessionID: string): IGetBodyResponseData; /** Handle client/match/offline/end */ endOfflineRaid(url: string, info: IEndOfflineRaidRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration */ getRaidConfiguration(url: string, info: IGetRaidConfigurationRequestData, sessionID: string): INullResponseData; + /** Handle client/raid/configuration-by-profile */ + getConfigurationByProfile(url: string, info: IGetRaidConfigurationRequestData, sessionID: string): INullResponseData; + /** Handle client/match/group/raid/ready */ + raidReady(url: string, info: IEmptyRequestData, sessionId: string): IGetBodyResponseData; + /** Handle client/match/group/raid/not-ready */ + notRaidReady(url: string, info: IEmptyRequestData, sessionId: string): IGetBodyResponseData; } diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/ModCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/ModCallbacks.d.ts index 6af1e68..a0df59f 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/ModCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/ModCallbacks.d.ts @@ -1,20 +1,20 @@ -import { OnLoad } from "@spt-aki/di/OnLoad"; -import { PostAkiModLoader } from "@spt-aki/loaders/PostAkiModLoader"; -import { IHttpConfig } from "@spt-aki/models/spt/config/IHttpConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { HttpFileUtil } from "@spt-aki/utils/HttpFileUtil"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { OnLoad } from "@spt/di/OnLoad"; +import { PostSptModLoader } from "@spt/loaders/PostSptModLoader"; +import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { HttpFileUtil } from "@spt/utils/HttpFileUtil"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class ModCallbacks implements OnLoad { protected logger: ILogger; protected httpResponse: HttpResponseUtil; protected httpFileUtil: HttpFileUtil; - protected postAkiModLoader: PostAkiModLoader; + protected postSptModLoader: PostSptModLoader; protected localisationService: LocalisationService; protected configServer: ConfigServer; protected httpConfig: IHttpConfig; - constructor(logger: ILogger, httpResponse: HttpResponseUtil, httpFileUtil: HttpFileUtil, postAkiModLoader: PostAkiModLoader, localisationService: LocalisationService, configServer: ConfigServer); + constructor(logger: ILogger, httpResponse: HttpResponseUtil, httpFileUtil: HttpFileUtil, postSptModLoader: PostSptModLoader, localisationService: LocalisationService, configServer: ConfigServer); onLoad(): Promise; getRoute(): string; } diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/NoteCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/NoteCallbacks.d.ts index a60d3bb..d078171 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/NoteCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/NoteCallbacks.d.ts @@ -1,7 +1,7 @@ -import { NoteController } from "@spt-aki/controllers/NoteController"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { INoteActionData } from "@spt-aki/models/eft/notes/INoteActionData"; +import { NoteController } from "@spt/controllers/NoteController"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { INoteActionData } from "@spt/models/eft/notes/INoteActionData"; export declare class NoteCallbacks { protected noteController: NoteController; constructor(noteController: NoteController); diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/NotifierCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/NotifierCallbacks.d.ts index 59faade..0436e12 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/NotifierCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/NotifierCallbacks.d.ts @@ -1,12 +1,12 @@ -import { NotifierController } from "@spt-aki/controllers/NotifierController"; -import { HttpServerHelper } from "@spt-aki/helpers/HttpServerHelper"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { INotifierChannel } from "@spt-aki/models/eft/notifier/INotifier"; -import { ISelectProfileRequestData } from "@spt-aki/models/eft/notifier/ISelectProfileRequestData"; -import { ISelectProfileResponse } from "@spt-aki/models/eft/notifier/ISelectProfileResponse"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; +import { NotifierController } from "@spt/controllers/NotifierController"; +import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IUIDRequestData } from "@spt/models/eft/common/request/IUIDRequestData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { INotifierChannel } from "@spt/models/eft/notifier/INotifier"; +import { ISelectProfileResponse } from "@spt/models/eft/notifier/ISelectProfileResponse"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; +import { JsonUtil } from "@spt/utils/JsonUtil"; export declare class NotifierCallbacks { protected httpServerHelper: HttpServerHelper; protected httpResponse: HttpResponseUtil; @@ -29,6 +29,6 @@ export declare class NotifierCallbacks { * Handle client/game/profile/select * @returns ISelectProfileResponse */ - selectProfile(url: string, info: ISelectProfileRequestData, sessionID: string): IGetBodyResponseData; + selectProfile(url: string, info: IUIDRequestData, sessionID: string): IGetBodyResponseData; notify(url: string, info: any, sessionID: string): string; } diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/PresetBuildCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/PresetBuildCallbacks.d.ts deleted file mode 100644 index f5a4c49..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/PresetBuildCallbacks.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { PresetBuildController } from "@spt-aki/controllers/PresetBuildController"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IPresetBuildActionRequestData } from "@spt-aki/models/eft/presetBuild/IPresetBuildActionRequestData"; -import { IRemoveBuildRequestData } from "@spt-aki/models/eft/presetBuild/IRemoveBuildRequestData"; -import { IUserBuilds } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -export declare class PresetBuildCallbacks { - protected httpResponse: HttpResponseUtil; - protected presetBuildController: PresetBuildController; - constructor(httpResponse: HttpResponseUtil, presetBuildController: PresetBuildController); - /** Handle client/handbook/builds/my/list */ - getHandbookUserlist(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - /** Handle SaveWeaponBuild event */ - saveWeaponBuild(pmcData: IPmcData, body: IPresetBuildActionRequestData, sessionID: string): IItemEventRouterResponse; - /** Handle removeBuild event*/ - removeBuild(pmcData: IPmcData, body: IRemoveBuildRequestData, sessionID: string): IItemEventRouterResponse; - /** Handle RemoveWeaponBuild event*/ - removeWeaponBuild(pmcData: IPmcData, body: IPresetBuildActionRequestData, sessionID: string): IItemEventRouterResponse; - /** Handle SaveEquipmentBuild event */ - saveEquipmentBuild(pmcData: IPmcData, body: IPresetBuildActionRequestData, sessionID: string): IItemEventRouterResponse; - /** Handle RemoveEquipmentBuild event*/ - removeEquipmentBuild(pmcData: IPmcData, body: IPresetBuildActionRequestData, sessionID: string): IItemEventRouterResponse; -} diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/PresetCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/PresetCallbacks.d.ts index 2741094..24edfa2 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/PresetCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/PresetCallbacks.d.ts @@ -1,5 +1,5 @@ -import { PresetController } from "@spt-aki/controllers/PresetController"; -import { OnLoad } from "@spt-aki/di/OnLoad"; +import { PresetController } from "@spt/controllers/PresetController"; +import { OnLoad } from "@spt/di/OnLoad"; export declare class PresetCallbacks implements OnLoad { protected presetController: PresetController; constructor(presetController: PresetController); diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/ProfileCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/ProfileCallbacks.d.ts index 2e1db38..ba35f5e 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/ProfileCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/ProfileCallbacks.d.ts @@ -1,26 +1,30 @@ -import { ProfileController } from "@spt-aki/controllers/ProfileController"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { INullResponseData } from "@spt-aki/models/eft/httpResponse/INullResponseData"; -import { IGetMiniProfileRequestData } from "@spt-aki/models/eft/launcher/IGetMiniProfileRequestData"; -import { GetProfileStatusResponseData } from "@spt-aki/models/eft/profile/GetProfileStatusResponseData"; -import { ICreateProfileResponse } from "@spt-aki/models/eft/profile/ICreateProfileResponse"; -import { IGetProfileSettingsRequest } from "@spt-aki/models/eft/profile/IGetProfileSettingsRequest"; -import { IProfileChangeNicknameRequestData } from "@spt-aki/models/eft/profile/IProfileChangeNicknameRequestData"; -import { IProfileChangeVoiceRequestData } from "@spt-aki/models/eft/profile/IProfileChangeVoiceRequestData"; -import { IProfileCreateRequestData } from "@spt-aki/models/eft/profile/IProfileCreateRequestData"; -import { ISearchFriendRequestData } from "@spt-aki/models/eft/profile/ISearchFriendRequestData"; -import { ISearchFriendResponse } from "@spt-aki/models/eft/profile/ISearchFriendResponse"; -import { IValidateNicknameRequestData } from "@spt-aki/models/eft/profile/IValidateNicknameRequestData"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { ProfileController } from "@spt/controllers/ProfileController"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { INullResponseData } from "@spt/models/eft/httpResponse/INullResponseData"; +import { IGetMiniProfileRequestData } from "@spt/models/eft/launcher/IGetMiniProfileRequestData"; +import { GetProfileStatusResponseData } from "@spt/models/eft/profile/GetProfileStatusResponseData"; +import { ICreateProfileResponse } from "@spt/models/eft/profile/ICreateProfileResponse"; +import { IGetOtherProfileRequest } from "@spt/models/eft/profile/IGetOtherProfileRequest"; +import { IGetOtherProfileResponse } from "@spt/models/eft/profile/IGetOtherProfileResponse"; +import { IGetProfileSettingsRequest } from "@spt/models/eft/profile/IGetProfileSettingsRequest"; +import { IProfileChangeNicknameRequestData } from "@spt/models/eft/profile/IProfileChangeNicknameRequestData"; +import { IProfileChangeVoiceRequestData } from "@spt/models/eft/profile/IProfileChangeVoiceRequestData"; +import { IProfileCreateRequestData } from "@spt/models/eft/profile/IProfileCreateRequestData"; +import { ISearchFriendRequestData } from "@spt/models/eft/profile/ISearchFriendRequestData"; +import { ISearchFriendResponse } from "@spt/models/eft/profile/ISearchFriendResponse"; +import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; /** Handle profile related client events */ export declare class ProfileCallbacks { protected httpResponse: HttpResponseUtil; protected timeUtil: TimeUtil; protected profileController: ProfileController; - constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, profileController: ProfileController); + protected profileHelper: ProfileHelper; + constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, profileController: ProfileController, profileHelper: ProfileHelper); /** * Handle client/game/profile/create */ @@ -62,10 +66,15 @@ export declare class ProfileCallbacks { * Called when creating a character when choosing a character face/voice */ getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + /** + * Handle client/profile/view + * Called when viewing another players profile + */ + getOtherProfile(url: string, request: IGetOtherProfileRequest, sessionID: string): IGetBodyResponseData; /** * Handle client/profile/settings */ - getProfileSettings(url: string, info: IGetProfileSettingsRequest, sessionId: string): IGetBodyResponseData; + getProfileSettings(url: string, info: IGetProfileSettingsRequest, sessionId: string): IGetBodyResponseData; /** * Handle client/game/profile/search */ diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/QuestCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/QuestCallbacks.d.ts index b5c5275..dec034e 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/QuestCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/QuestCallbacks.d.ts @@ -1,17 +1,17 @@ -import { QuestController } from "@spt-aki/controllers/QuestController"; -import { RepeatableQuestController } from "@spt-aki/controllers/RepeatableQuestController"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IQuest } from "@spt-aki/models/eft/common/tables/IQuest"; -import { IPmcDataRepeatableQuest } from "@spt-aki/models/eft/common/tables/IRepeatableQuests"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IAcceptQuestRequestData } from "@spt-aki/models/eft/quests/IAcceptQuestRequestData"; -import { ICompleteQuestRequestData } from "@spt-aki/models/eft/quests/ICompleteQuestRequestData"; -import { IHandoverQuestRequestData } from "@spt-aki/models/eft/quests/IHandoverQuestRequestData"; -import { IListQuestsRequestData } from "@spt-aki/models/eft/quests/IListQuestsRequestData"; -import { IRepeatableQuestChangeRequest } from "@spt-aki/models/eft/quests/IRepeatableQuestChangeRequest"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { QuestController } from "@spt/controllers/QuestController"; +import { RepeatableQuestController } from "@spt/controllers/RepeatableQuestController"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IQuest } from "@spt/models/eft/common/tables/IQuest"; +import { IPmcDataRepeatableQuest } from "@spt/models/eft/common/tables/IRepeatableQuests"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IAcceptQuestRequestData } from "@spt/models/eft/quests/IAcceptQuestRequestData"; +import { ICompleteQuestRequestData } from "@spt/models/eft/quests/ICompleteQuestRequestData"; +import { IHandoverQuestRequestData } from "@spt/models/eft/quests/IHandoverQuestRequestData"; +import { IListQuestsRequestData } from "@spt/models/eft/quests/IListQuestsRequestData"; +import { IRepeatableQuestChangeRequest } from "@spt/models/eft/quests/IRepeatableQuestChangeRequest"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class QuestCallbacks { protected httpResponse: HttpResponseUtil; protected questController: QuestController; diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/RagfairCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/RagfairCallbacks.d.ts index bad2ce0..1e92996 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/RagfairCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/RagfairCallbacks.d.ts @@ -1,40 +1,38 @@ -import { RagfairController } from "@spt-aki/controllers/RagfairController"; -import { OnLoad } from "@spt-aki/di/OnLoad"; -import { OnUpdate } from "@spt-aki/di/OnUpdate"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { INullResponseData } from "@spt-aki/models/eft/httpResponse/INullResponseData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IAddOfferRequestData } from "@spt-aki/models/eft/ragfair/IAddOfferRequestData"; -import { IExtendOfferRequestData } from "@spt-aki/models/eft/ragfair/IExtendOfferRequestData"; -import { IGetItemPriceResult } from "@spt-aki/models/eft/ragfair/IGetItemPriceResult"; -import { IGetMarketPriceRequestData } from "@spt-aki/models/eft/ragfair/IGetMarketPriceRequestData"; -import { IGetOffersResult } from "@spt-aki/models/eft/ragfair/IGetOffersResult"; -import { IGetRagfairOfferByIdRequest } from "@spt-aki/models/eft/ragfair/IGetRagfairOfferByIdRequest"; -import { IRagfairOffer } from "@spt-aki/models/eft/ragfair/IRagfairOffer"; -import { IRemoveOfferRequestData } from "@spt-aki/models/eft/ragfair/IRemoveOfferRequestData"; -import { ISearchRequestData } from "@spt-aki/models/eft/ragfair/ISearchRequestData"; -import { ISendRagfairReportRequestData } from "@spt-aki/models/eft/ragfair/ISendRagfairReportRequestData"; -import { IStorePlayerOfferTaxAmountRequestData } from "@spt-aki/models/eft/ragfair/IStorePlayerOfferTaxAmountRequestData"; -import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { RagfairServer } from "@spt-aki/servers/RagfairServer"; -import { RagfairTaxService } from "@spt-aki/services/RagfairTaxService"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; +import { RagfairController } from "@spt/controllers/RagfairController"; +import { OnLoad } from "@spt/di/OnLoad"; +import { OnUpdate } from "@spt/di/OnUpdate"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { INullResponseData } from "@spt/models/eft/httpResponse/INullResponseData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IAddOfferRequestData } from "@spt/models/eft/ragfair/IAddOfferRequestData"; +import { IExtendOfferRequestData } from "@spt/models/eft/ragfair/IExtendOfferRequestData"; +import { IGetItemPriceResult } from "@spt/models/eft/ragfair/IGetItemPriceResult"; +import { IGetMarketPriceRequestData } from "@spt/models/eft/ragfair/IGetMarketPriceRequestData"; +import { IGetOffersResult } from "@spt/models/eft/ragfair/IGetOffersResult"; +import { IGetRagfairOfferByIdRequest } from "@spt/models/eft/ragfair/IGetRagfairOfferByIdRequest"; +import { IRagfairOffer } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { IRemoveOfferRequestData } from "@spt/models/eft/ragfair/IRemoveOfferRequestData"; +import { ISearchRequestData } from "@spt/models/eft/ragfair/ISearchRequestData"; +import { ISendRagfairReportRequestData } from "@spt/models/eft/ragfair/ISendRagfairReportRequestData"; +import { IStorePlayerOfferTaxAmountRequestData } from "@spt/models/eft/ragfair/IStorePlayerOfferTaxAmountRequestData"; +import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { RagfairServer } from "@spt/servers/RagfairServer"; +import { RagfairTaxService } from "@spt/services/RagfairTaxService"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; /** * Handle ragfair related callback events */ export declare class RagfairCallbacks implements OnLoad, OnUpdate { protected httpResponse: HttpResponseUtil; - protected jsonUtil: JsonUtil; protected ragfairServer: RagfairServer; protected ragfairController: RagfairController; protected ragfairTaxService: RagfairTaxService; protected configServer: ConfigServer; protected ragfairConfig: IRagfairConfig; - constructor(httpResponse: HttpResponseUtil, jsonUtil: JsonUtil, ragfairServer: RagfairServer, ragfairController: RagfairController, ragfairTaxService: RagfairTaxService, configServer: ConfigServer); + constructor(httpResponse: HttpResponseUtil, ragfairServer: RagfairServer, ragfairController: RagfairController, ragfairTaxService: RagfairTaxService, configServer: ConfigServer); onLoad(): Promise; getRoute(): string; onUpdate(timeSinceLastRun: number): Promise; @@ -47,7 +45,7 @@ export declare class RagfairCallbacks implements OnLoad, OnUpdate { getMarketPrice(url: string, info: IGetMarketPriceRequestData, sessionID: string): IGetBodyResponseData; /** Handle RagFairAddOffer event */ addOffer(pmcData: IPmcData, info: IAddOfferRequestData, sessionID: string): IItemEventRouterResponse; - /** \Handle RagFairRemoveOffer event */ + /** Handle RagFairRemoveOffer event */ removeOffer(pmcData: IPmcData, info: IRemoveOfferRequestData, sessionID: string): IItemEventRouterResponse; /** Handle RagFairRenewOffer event */ extendOffer(pmcData: IPmcData, info: IExtendOfferRequestData, sessionID: string): IItemEventRouterResponse; diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/RepairCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/RepairCallbacks.d.ts index c8587dc..930708e 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/RepairCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/RepairCallbacks.d.ts @@ -1,8 +1,8 @@ -import { RepairController } from "@spt-aki/controllers/RepairController"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IRepairActionDataRequest } from "@spt-aki/models/eft/repair/IRepairActionDataRequest"; -import { ITraderRepairActionDataRequest } from "@spt-aki/models/eft/repair/ITraderRepairActionDataRequest"; +import { RepairController } from "@spt/controllers/RepairController"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IRepairActionDataRequest } from "@spt/models/eft/repair/IRepairActionDataRequest"; +import { ITraderRepairActionDataRequest } from "@spt/models/eft/repair/ITraderRepairActionDataRequest"; export declare class RepairCallbacks { protected repairController: RepairController; constructor(repairController: RepairController); diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/SaveCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/SaveCallbacks.d.ts index 74d463f..8f836cb 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/SaveCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/SaveCallbacks.d.ts @@ -1,8 +1,8 @@ -import { OnLoad } from "@spt-aki/di/OnLoad"; -import { OnUpdate } from "@spt-aki/di/OnUpdate"; -import { ICoreConfig } from "@spt-aki/models/spt/config/ICoreConfig"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; +import { OnLoad } from "@spt/di/OnLoad"; +import { OnUpdate } from "@spt/di/OnUpdate"; +import { ICoreConfig } from "@spt/models/spt/config/ICoreConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; export declare class SaveCallbacks implements OnLoad, OnUpdate { protected saveServer: SaveServer; protected configServer: ConfigServer; diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/TradeCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/TradeCallbacks.d.ts index bfa72b0..0f8ebe3 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/TradeCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/TradeCallbacks.d.ts @@ -1,9 +1,9 @@ -import { TradeController } from "@spt-aki/controllers/TradeController"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IProcessBaseTradeRequestData } from "@spt-aki/models/eft/trade/IProcessBaseTradeRequestData"; -import { IProcessRagfairTradeRequestData } from "@spt-aki/models/eft/trade/IProcessRagfairTradeRequestData"; -import { ISellScavItemsToFenceRequestData } from "@spt-aki/models/eft/trade/ISellScavItemsToFenceRequestData"; +import { TradeController } from "@spt/controllers/TradeController"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IProcessBaseTradeRequestData } from "@spt/models/eft/trade/IProcessBaseTradeRequestData"; +import { IProcessRagfairTradeRequestData } from "@spt/models/eft/trade/IProcessRagfairTradeRequestData"; +import { ISellScavItemsToFenceRequestData } from "@spt/models/eft/trade/ISellScavItemsToFenceRequestData"; export declare class TradeCallbacks { protected tradeController: TradeController; constructor(tradeController: TradeController); diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/TraderCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/TraderCallbacks.d.ts index 3002b62..c081a9b 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/TraderCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/TraderCallbacks.d.ts @@ -1,14 +1,15 @@ -import { TraderController } from "@spt-aki/controllers/TraderController"; -import { OnLoad } from "@spt-aki/di/OnLoad"; -import { OnUpdate } from "@spt-aki/di/OnUpdate"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { ITraderAssort, ITraderBase } from "@spt-aki/models/eft/common/tables/ITrader"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { TraderController } from "@spt/controllers/TraderController"; +import { OnLoad } from "@spt/di/OnLoad"; +import { OnUpdate } from "@spt/di/OnUpdate"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { ITraderAssort, ITraderBase } from "@spt/models/eft/common/tables/ITrader"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class TraderCallbacks implements OnLoad, OnUpdate { protected httpResponse: HttpResponseUtil; protected traderController: TraderController; - constructor(httpResponse: HttpResponseUtil, traderController: TraderController); + constructor(httpResponse: HttpResponseUtil, // TODO: delay required + traderController: TraderController); onLoad(): Promise; onUpdate(): Promise; getRoute(): string; diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/WeatherCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/WeatherCallbacks.d.ts index 2c6fdf6..5ba5aab 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/WeatherCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/WeatherCallbacks.d.ts @@ -1,8 +1,8 @@ -import { WeatherController } from "@spt-aki/controllers/WeatherController"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { IWeatherData } from "@spt-aki/models/eft/weather/IWeatherData"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { WeatherController } from "@spt/controllers/WeatherController"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { IWeatherData } from "@spt/models/eft/weather/IWeatherData"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class WeatherCallbacks { protected httpResponse: HttpResponseUtil; protected weatherController: WeatherController; diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/WishlistCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/WishlistCallbacks.d.ts index 29c3e44..f5b500f 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/WishlistCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/WishlistCallbacks.d.ts @@ -1,7 +1,7 @@ -import { WishlistController } from "@spt-aki/controllers/WishlistController"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IWishlistActionData } from "@spt-aki/models/eft/wishlist/IWishlistActionData"; +import { WishlistController } from "@spt/controllers/WishlistController"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IWishlistActionData } from "@spt/models/eft/wishlist/IWishlistActionData"; export declare class WishlistCallbacks { protected wishlistController: WishlistController; constructor(wishlistController: WishlistController); diff --git a/TypeScript/23CustomAbstractChatBot/types/context/ApplicationContext.d.ts b/TypeScript/23CustomAbstractChatBot/types/context/ApplicationContext.d.ts index 5eea16e..bef168a 100644 --- a/TypeScript/23CustomAbstractChatBot/types/context/ApplicationContext.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/context/ApplicationContext.d.ts @@ -1,21 +1,20 @@ -import { ContextVariable } from "@spt-aki/context/ContextVariable"; -import { ContextVariableType } from "@spt-aki/context/ContextVariableType"; +import { ContextVariable } from "@spt/context/ContextVariable"; +import { ContextVariableType } from "@spt/context/ContextVariableType"; export declare class ApplicationContext { private variables; private static holderMaxSize; /** * Called like: - * + * ``` * const registerPlayerInfo = this.applicationContext.getLatestValue(ContextVariableType.REGISTER_PLAYER_REQUEST).getValue(); * * const activePlayerSessionId = this.applicationContext.getLatestValue(ContextVariableType.SESSION_ID).getValue(); * * const matchInfo = this.applicationContext.getLatestValue(ContextVariableType.RAID_CONFIGURATION).getValue(); - * @param type - * @returns + * ``` */ - getLatestValue(type: ContextVariableType): ContextVariable; - getValues(type: ContextVariableType): ContextVariable[]; + getLatestValue(type: ContextVariableType): ContextVariable | undefined; + getValues(type: ContextVariableType): ContextVariable[] | undefined; addValue(type: ContextVariableType, value: any): void; clearValues(type: ContextVariableType): void; } diff --git a/TypeScript/23CustomAbstractChatBot/types/context/ContextVariable.d.ts b/TypeScript/23CustomAbstractChatBot/types/context/ContextVariable.d.ts index 21bf7ef..246be85 100644 --- a/TypeScript/23CustomAbstractChatBot/types/context/ContextVariable.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/context/ContextVariable.d.ts @@ -1,4 +1,4 @@ -import { ContextVariableType } from "@spt-aki/context/ContextVariableType"; +import { ContextVariableType } from "@spt/context/ContextVariableType"; export declare class ContextVariable { private value; private timestamp; diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/AchievementController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/AchievementController.d.ts new file mode 100644 index 0000000..425b848 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/AchievementController.d.ts @@ -0,0 +1,23 @@ +import { ICompletedAchievementsResponse } from "@spt/models/eft/profile/ICompletedAchievementsResponse"; +import { IGetAchievementsResponse } from "@spt/models/eft/profile/IGetAchievementsResponse"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseService } from "@spt/services/DatabaseService"; +/** + * Logic for handling In Raid callbacks + */ +export declare class AchievementController { + protected logger: ILogger; + protected databaseService: DatabaseService; + constructor(logger: ILogger, databaseService: DatabaseService); + /** + * Get base achievements + * @param sessionID Session id + */ + getAchievements(sessionID: string): IGetAchievementsResponse; + /** + * Shows % of 'other' players who've completed each achievement + * @param sessionId Session id + * @returns ICompletedAchievementsResponse + */ + getAchievementStatistics(sessionId: string): ICompletedAchievementsResponse; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/BotController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/BotController.d.ts index f7ba1aa..6431fca 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/BotController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/BotController.d.ts @@ -1,66 +1,126 @@ -import { ApplicationContext } from "@spt-aki/context/ApplicationContext"; -import { BotGenerator } from "@spt-aki/generators/BotGenerator"; -import { BotDifficultyHelper } from "@spt-aki/helpers/BotDifficultyHelper"; -import { BotHelper } from "@spt-aki/helpers/BotHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { IGenerateBotsRequestData } from "@spt-aki/models/eft/bot/IGenerateBotsRequestData"; -import { IBotBase } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { IBotCore } from "@spt-aki/models/eft/common/tables/IBotCore"; -import { Difficulty } from "@spt-aki/models/eft/common/tables/IBotType"; -import { IBotConfig } from "@spt-aki/models/spt/config/IBotConfig"; -import { IPmcConfig } from "@spt-aki/models/spt/config/IPmcConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { BotGenerationCacheService } from "@spt-aki/services/BotGenerationCacheService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { MatchBotDetailsCacheService } from "@spt-aki/services/MatchBotDetailsCacheService"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { BotGenerator } from "@spt/generators/BotGenerator"; +import { BotDifficultyHelper } from "@spt/helpers/BotDifficultyHelper"; +import { BotHelper } from "@spt/helpers/BotHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { MinMax } from "@spt/models/common/MinMax"; +import { Condition, IGenerateBotsRequestData } from "@spt/models/eft/bot/IGenerateBotsRequestData"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBotBase } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotCore } from "@spt/models/eft/common/tables/IBotCore"; +import { Difficulty } from "@spt/models/eft/common/tables/IBotType"; +import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; +import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; +import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { MatchBotDetailsCacheService } from "@spt/services/MatchBotDetailsCacheService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class BotController { protected logger: ILogger; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected botGenerator: BotGenerator; protected botHelper: BotHelper; protected botDifficultyHelper: BotDifficultyHelper; + protected weightedRandomHelper: WeightedRandomHelper; protected botGenerationCacheService: BotGenerationCacheService; protected matchBotDetailsCacheService: MatchBotDetailsCacheService; protected localisationService: LocalisationService; + protected seasonalEventService: SeasonalEventService; protected profileHelper: ProfileHelper; protected configServer: ConfigServer; protected applicationContext: ApplicationContext; - protected jsonUtil: JsonUtil; + protected randomUtil: RandomUtil; + protected cloner: ICloner; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - constructor(logger: ILogger, databaseServer: DatabaseServer, botGenerator: BotGenerator, botHelper: BotHelper, botDifficultyHelper: BotDifficultyHelper, botGenerationCacheService: BotGenerationCacheService, matchBotDetailsCacheService: MatchBotDetailsCacheService, localisationService: LocalisationService, profileHelper: ProfileHelper, configServer: ConfigServer, applicationContext: ApplicationContext, jsonUtil: JsonUtil); + constructor(logger: ILogger, databaseService: DatabaseService, botGenerator: BotGenerator, botHelper: BotHelper, botDifficultyHelper: BotDifficultyHelper, weightedRandomHelper: WeightedRandomHelper, botGenerationCacheService: BotGenerationCacheService, matchBotDetailsCacheService: MatchBotDetailsCacheService, localisationService: LocalisationService, seasonalEventService: SeasonalEventService, profileHelper: ProfileHelper, configServer: ConfigServer, applicationContext: ApplicationContext, randomUtil: RandomUtil, cloner: ICloner); /** - * Return the number of bot loadout varieties to be generated - * @param type bot Type we want the loadout gen count for + * Return the number of bot load-out varieties to be generated + * @param type bot Type we want the load-out gen count for * @returns number of bots to generate */ getBotPresetGenerationLimit(type: string): number; /** * Handle singleplayer/settings/bot/difficulty - * Get the core.json difficulty settings from database\bots + * Get the core.json difficulty settings from database/bots * @returns IBotCore */ getBotCoreDifficulty(): IBotCore; /** * Get bot difficulty settings - * adjust PMC settings to ensure they engage the correct bot types + * Adjust PMC settings to ensure they engage the correct bot types * @param type what bot the server is requesting settings for - * @param difficulty difficulty level server requested settings for + * @param diffLevel difficulty level server requested settings for + * @param ignoreRaidSettings should raid settings chosen pre-raid be ignored * @returns Difficulty object */ - getBotDifficulty(type: string, difficulty: string): Difficulty; + getBotDifficulty(type: string, diffLevel: string, ignoreRaidSettings?: boolean): Difficulty; + getAllBotDifficulties(): Record; /** * Generate bot profiles and store in cache * @param sessionId Session id * @param info bot generation request info * @returns IBotBase array */ - generate(sessionId: string, info: IGenerateBotsRequestData): IBotBase[]; + generate(sessionId: string, info: IGenerateBotsRequestData): Promise; /** - * Get the difficulty passed in, if its not "asoline", get selected difficulty from config + * On first bot generation bots are generated and stored inside a cache, ready to be used later + * @param request Bot generation request object + * @param pmcProfile Player profile + * @param sessionId Session id + * @returns + */ + generateBotsFirstTime(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + /** + * Create a BotGenerationDetails for the bot generator to use + * @param condition Client data defining bot type and difficulty + * @param pmcProfile Player who is generating bots + * @param allPmcsHaveSameNameAsPlayer Should all PMCs have same name as player + * @param pmcLevelRangeForMap Min/max levels for PMCs to generate within + * @param botCountToGenerate How many bots to generate + * @param generateAsPmc Force bot being generated a PMC + * @returns BotGenerationDetails + */ + protected getBotGenerationDetailsForWave(condition: Condition, pmcProfile: IPmcData, allPmcsHaveSameNameAsPlayer: boolean, pmcLevelRangeForMap: MinMax, botCountToGenerate: number, generateAsPmc: boolean): BotGenerationDetails; + /** + * Get players profile level + * @param pmcProfile Profile to get level from + * @returns Level as number + */ + protected getPlayerLevelFromProfile(pmcProfile: IPmcData): number; + /** + * Generate many bots and store then on the cache + * @param condition the condition details to generate the bots with + * @param botGenerationDetails the bot details to generate the bot with + * @param sessionId Session id + * @returns A promise for the bots to be done generating + */ + protected generateWithBotDetails(condition: Condition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; + /** + * Generate a single bot and store in the cache + * @param botGenerationDetails the bot details to generate the bot with + * @param sessionId Session id + * @param cacheKey the cache key to store the bot with + * @returns A promise for the bot to be stored + */ + protected generateSingleBotAndStoreInCache(botGenerationDetails: BotGenerationDetails, sessionId: string, cacheKey: string): Promise; + /** + * Pull a single bot out of cache and return, if cache is empty add bots to it and then return + * @param sessionId Session id + * @param request Bot generation request object + * @returns Single IBotBase object + */ + returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected updateBotGenerationDetailsToRandomBoss(botGenerationDetails: BotGenerationDetails, possibleBossTypeWeights: Record): void; + /** + * Get the difficulty passed in, if its not "asonline", get selected difficulty from config * @param requestedDifficulty * @returns */ @@ -68,8 +128,9 @@ export declare class BotController { /** * Get the max number of bots allowed on a map * Looks up location player is entering when getting cap value + * @param location The map location cap was requested for * @returns cap number */ - getBotCap(): number; + getBotCap(location: string): number; getAiBotBrainTypes(): any; } diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/BuildController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/BuildController.d.ts new file mode 100644 index 0000000..ed8adf6 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/BuildController.d.ts @@ -0,0 +1,38 @@ +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { ISetMagazineRequest } from "@spt/models/eft/builds/ISetMagazineRequest"; +import { IPresetBuildActionRequestData } from "@spt/models/eft/presetBuild/IPresetBuildActionRequestData"; +import { IRemoveBuildRequestData } from "@spt/models/eft/presetBuild/IRemoveBuildRequestData"; +import { IUserBuilds } from "@spt/models/eft/profile/ISptProfile"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +export declare class BuildController { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected eventOutputHolder: EventOutputHolder; + protected databaseService: DatabaseService; + protected profileHelper: ProfileHelper; + protected localisationService: LocalisationService; + protected itemHelper: ItemHelper; + protected saveServer: SaveServer; + protected cloner: ICloner; + constructor(logger: ILogger, hashUtil: HashUtil, eventOutputHolder: EventOutputHolder, databaseService: DatabaseService, profileHelper: ProfileHelper, localisationService: LocalisationService, itemHelper: ItemHelper, saveServer: SaveServer, cloner: ICloner); + /** Handle client/handbook/builds/my/list */ + getUserBuilds(sessionID: string): IUserBuilds; + /** Handle client/builds/weapon/save */ + saveWeaponBuild(sessionId: string, body: IPresetBuildActionRequestData): void; + /** Handle client/builds/equipment/save event */ + saveEquipmentBuild(sessionID: string, request: IPresetBuildActionRequestData): void; + /** Handle client/builds/delete */ + removeBuild(sessionID: string, request: IRemoveBuildRequestData): void; + protected removePlayerBuild(idToRemove: string, sessionID: string): void; + /** + * Handle client/builds/magazine/save + */ + createMagazineTemplate(sessionId: string, request: ISetMagazineRequest): void; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/ClientLogController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/ClientLogController.d.ts index 5d70ba4..6356c03 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/ClientLogController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/ClientLogController.d.ts @@ -1,5 +1,5 @@ -import { IClientLogRequest } from "@spt-aki/models/spt/logging/IClientLogRequest"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; +import { IClientLogRequest } from "@spt/models/spt/logging/IClientLogRequest"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; export declare class ClientLogController { protected logger: ILogger; constructor(logger: ILogger); diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/CustomizationController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/CustomizationController.d.ts index 27de49a..028341a 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/CustomizationController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/CustomizationController.d.ts @@ -1,18 +1,18 @@ -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { ISuit } from "@spt-aki/models/eft/common/tables/ITrader"; -import { ClothingItem, IBuyClothingRequestData } from "@spt-aki/models/eft/customization/IBuyClothingRequestData"; -import { IWearClothingRequestData } from "@spt-aki/models/eft/customization/IWearClothingRequestData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { ISuit } from "@spt/models/eft/common/tables/ITrader"; +import { ClothingItem, IBuyClothingRequestData } from "@spt/models/eft/customization/IBuyClothingRequestData"; +import { IWearClothingRequestData } from "@spt/models/eft/customization/IWearClothingRequestData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; export declare class CustomizationController { protected logger: ILogger; protected eventOutputHolder: EventOutputHolder; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected saveServer: SaveServer; protected localisationService: LocalisationService; protected profileHelper: ProfileHelper; @@ -20,7 +20,7 @@ export declare class CustomizationController { lowerParentId: string; upperParentId: string; }; - constructor(logger: ILogger, eventOutputHolder: EventOutputHolder, databaseServer: DatabaseServer, saveServer: SaveServer, localisationService: LocalisationService, profileHelper: ProfileHelper); + constructor(logger: ILogger, eventOutputHolder: EventOutputHolder, databaseService: DatabaseService, saveServer: SaveServer, localisationService: LocalisationService, profileHelper: ProfileHelper); /** * Get purchasable clothing items from trader that match players side (usec/bear) * @param traderID trader to look up clothing for diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/DialogueController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/DialogueController.d.ts index 8d47886..c15d724 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/DialogueController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/DialogueController.d.ts @@ -1,26 +1,30 @@ -import { IDialogueChatBot } from "@spt-aki/helpers/Dialogue/IDialogueChatBot"; -import { DialogueHelper } from "@spt-aki/helpers/DialogueHelper"; -import { IGetAllAttachmentsResponse } from "@spt-aki/models/eft/dialog/IGetAllAttachmentsResponse"; -import { IGetFriendListDataResponse } from "@spt-aki/models/eft/dialog/IGetFriendListDataResponse"; -import { IGetMailDialogViewRequestData } from "@spt-aki/models/eft/dialog/IGetMailDialogViewRequestData"; -import { IGetMailDialogViewResponseData } from "@spt-aki/models/eft/dialog/IGetMailDialogViewResponseData"; -import { ISendMessageRequest } from "@spt-aki/models/eft/dialog/ISendMessageRequest"; -import { Dialogue, DialogueInfo, IAkiProfile, IUserDialogInfo, Message } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { MessageType } from "@spt-aki/models/enums/MessageType"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { MailSendService } from "@spt-aki/services/MailSendService"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { IDialogueChatBot } from "@spt/helpers/Dialogue/IDialogueChatBot"; +import { DialogueHelper } from "@spt/helpers/DialogueHelper"; +import { IFriendRequestData } from "@spt/models/eft/dialog/IFriendRequestData"; +import { IFriendRequestSendResponse } from "@spt/models/eft/dialog/IFriendRequestSendResponse"; +import { IGetAllAttachmentsResponse } from "@spt/models/eft/dialog/IGetAllAttachmentsResponse"; +import { IGetFriendListDataResponse } from "@spt/models/eft/dialog/IGetFriendListDataResponse"; +import { IGetMailDialogViewRequestData } from "@spt/models/eft/dialog/IGetMailDialogViewRequestData"; +import { IGetMailDialogViewResponseData } from "@spt/models/eft/dialog/IGetMailDialogViewResponseData"; +import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; +import { Dialogue, DialogueInfo, ISptProfile, IUserDialogInfo, Message } from "@spt/models/eft/profile/ISptProfile"; +import { MessageType } from "@spt/models/enums/MessageType"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { MailSendService } from "@spt/services/MailSendService"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class DialogueController { protected logger: ILogger; protected saveServer: SaveServer; protected timeUtil: TimeUtil; protected dialogueHelper: DialogueHelper; protected mailSendService: MailSendService; + protected localisationService: LocalisationService; protected configServer: ConfigServer; protected dialogueChatBots: IDialogueChatBot[]; - constructor(logger: ILogger, saveServer: SaveServer, timeUtil: TimeUtil, dialogueHelper: DialogueHelper, mailSendService: MailSendService, configServer: ConfigServer, dialogueChatBots: IDialogueChatBot[]); + constructor(logger: ILogger, saveServer: SaveServer, timeUtil: TimeUtil, dialogueHelper: DialogueHelper, mailSendService: MailSendService, localisationService: LocalisationService, configServer: ConfigServer, dialogueChatBots: IDialogueChatBot[]); registerChatBot(chatBot: IDialogueChatBot): void; /** Handle onUpdate spt event */ update(): void; @@ -51,7 +55,7 @@ export declare class DialogueController { * @param sessionID Player id * @returns IUserDialogInfo array */ - getDialogueUsers(dialog: Dialogue, messageType: MessageType, sessionID: string): IUserDialogInfo[]; + getDialogueUsers(dialog: Dialogue, messageType: MessageType, sessionID: string): IUserDialogInfo[] | undefined; /** * Handle client/mail/dialog/view * Handle player clicking 'messenger' and seeing all the messages they've recieved @@ -68,14 +72,14 @@ export declare class DialogueController { * @param request get dialog request (params used when dialog doesnt exist in profile) * @returns Dialogue */ - protected getDialogByIdFromProfile(profile: IAkiProfile, request: IGetMailDialogViewRequestData): Dialogue; + protected getDialogByIdFromProfile(profile: ISptProfile, request: IGetMailDialogViewRequestData): Dialogue; /** * Get the users involved in a mail between two entities * @param fullProfile Player profile * @param dialogUsers The participants of the mail * @returns IUserDialogInfo array */ - protected getProfilesForMail(fullProfile: IAkiProfile, dialogUsers: IUserDialogInfo[]): IUserDialogInfo[]; + protected getProfilesForMail(fullProfile: ISptProfile, dialogUsers?: IUserDialogInfo[]): IUserDialogInfo[]; /** * Get a count of messages with attachments from a particular dialog * @param sessionID Session id @@ -110,9 +114,9 @@ export declare class DialogueController { * Get all uncollected items attached to mail in a particular dialog * @param dialogueId Dialog to get mail attachments from * @param sessionId Session id - * @returns + * @returns IGetAllAttachmentsResponse */ - getAllAttachments(dialogueId: string, sessionId: string): IGetAllAttachmentsResponse; + getAllAttachments(dialogueId: string, sessionId: string): IGetAllAttachmentsResponse | undefined; /** client/mail/msg/send */ sendMessage(sessionId: string, request: ISendMessageRequest): string; /** @@ -145,4 +149,6 @@ export declare class DialogueController { * @returns true or false */ protected messageHasExpired(message: Message): boolean; + /** Handle client/friend/request/send */ + sendFriendRequest(sessionID: string, request: IFriendRequestData): IFriendRequestSendResponse; } diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/GameController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/GameController.d.ts index d2a978b..533a81c 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/GameController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/GameController.d.ts @@ -1,46 +1,49 @@ -import { ApplicationContext } from "@spt-aki/context/ApplicationContext"; -import { HideoutHelper } from "@spt-aki/helpers/HideoutHelper"; -import { HttpServerHelper } from "@spt-aki/helpers/HttpServerHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { PreAkiModLoader } from "@spt-aki/loaders/PreAkiModLoader"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { ICheckVersionResponse } from "@spt-aki/models/eft/game/ICheckVersionResponse"; -import { ICurrentGroupResponse } from "@spt-aki/models/eft/game/ICurrentGroupResponse"; -import { IGameConfigResponse } from "@spt-aki/models/eft/game/IGameConfigResponse"; -import { IGameKeepAliveResponse } from "@spt-aki/models/eft/game/IGameKeepAliveResponse"; -import { IGetRaidTimeRequest } from "@spt-aki/models/eft/game/IGetRaidTimeRequest"; -import { IGetRaidTimeResponse } from "@spt-aki/models/eft/game/IGetRaidTimeResponse"; -import { IServerDetails } from "@spt-aki/models/eft/game/IServerDetails"; -import { IAkiProfile } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { ICoreConfig } from "@spt-aki/models/spt/config/ICoreConfig"; -import { IHttpConfig } from "@spt-aki/models/spt/config/IHttpConfig"; -import { ILocationConfig } from "@spt-aki/models/spt/config/ILocationConfig"; -import { ILootConfig } from "@spt-aki/models/spt/config/ILootConfig"; -import { IPmcConfig } from "@spt-aki/models/spt/config/IPmcConfig"; -import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { CustomLocationWaveService } from "@spt-aki/services/CustomLocationWaveService"; -import { GiftService } from "@spt-aki/services/GiftService"; -import { ItemBaseClassService } from "@spt-aki/services/ItemBaseClassService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { OpenZoneService } from "@spt-aki/services/OpenZoneService"; -import { ProfileFixerService } from "@spt-aki/services/ProfileFixerService"; -import { RaidTimeAdjustmentService } from "@spt-aki/services/RaidTimeAdjustmentService"; -import { SeasonalEventService } from "@spt-aki/services/SeasonalEventService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { ICheckVersionResponse } from "@spt/models/eft/game/ICheckVersionResponse"; +import { ICurrentGroupResponse } from "@spt/models/eft/game/ICurrentGroupResponse"; +import { IGameConfigResponse } from "@spt/models/eft/game/IGameConfigResponse"; +import { IGameKeepAliveResponse } from "@spt/models/eft/game/IGameKeepAliveResponse"; +import { IGameModeRequestData } from "@spt/models/eft/game/IGameModeRequestData"; +import { IGetRaidTimeRequest } from "@spt/models/eft/game/IGetRaidTimeRequest"; +import { IGetRaidTimeResponse } from "@spt/models/eft/game/IGetRaidTimeResponse"; +import { IServerDetails } from "@spt/models/eft/game/IServerDetails"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; +import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; +import { ICoreConfig } from "@spt/models/spt/config/ICoreConfig"; +import { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { ILootConfig } from "@spt/models/spt/config/ILootConfig"; +import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { CustomLocationWaveService } from "@spt/services/CustomLocationWaveService"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { GiftService } from "@spt/services/GiftService"; +import { ItemBaseClassService } from "@spt/services/ItemBaseClassService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { OpenZoneService } from "@spt/services/OpenZoneService"; +import { ProfileActivityService } from "@spt/services/ProfileActivityService"; +import { ProfileFixerService } from "@spt/services/ProfileFixerService"; +import { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class GameController { protected logger: ILogger; - protected databaseServer: DatabaseServer; - protected jsonUtil: JsonUtil; + protected databaseService: DatabaseService; protected timeUtil: TimeUtil; protected hashUtil: HashUtil; - protected preAkiModLoader: PreAkiModLoader; + protected preSptModLoader: PreSptModLoader; protected httpServerHelper: HttpServerHelper; protected randomUtil: RandomUtil; protected hideoutHelper: HideoutHelper; @@ -53,33 +56,46 @@ export declare class GameController { protected itemBaseClassService: ItemBaseClassService; protected giftService: GiftService; protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected profileActivityService: ProfileActivityService; protected applicationContext: ApplicationContext; protected configServer: ConfigServer; + protected cloner: ICloner; protected httpConfig: IHttpConfig; protected coreConfig: ICoreConfig; protected locationConfig: ILocationConfig; protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; protected pmcConfig: IPmcConfig; protected lootConfig: ILootConfig; - constructor(logger: ILogger, databaseServer: DatabaseServer, jsonUtil: JsonUtil, timeUtil: TimeUtil, hashUtil: HashUtil, preAkiModLoader: PreAkiModLoader, httpServerHelper: HttpServerHelper, randomUtil: RandomUtil, hideoutHelper: HideoutHelper, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, customLocationWaveService: CustomLocationWaveService, openZoneService: OpenZoneService, seasonalEventService: SeasonalEventService, itemBaseClassService: ItemBaseClassService, giftService: GiftService, raidTimeAdjustmentService: RaidTimeAdjustmentService, applicationContext: ApplicationContext, configServer: ConfigServer); + protected botConfig: IBotConfig; + constructor(logger: ILogger, databaseService: DatabaseService, timeUtil: TimeUtil, hashUtil: HashUtil, preSptModLoader: PreSptModLoader, httpServerHelper: HttpServerHelper, randomUtil: RandomUtil, hideoutHelper: HideoutHelper, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, customLocationWaveService: CustomLocationWaveService, openZoneService: OpenZoneService, seasonalEventService: SeasonalEventService, itemBaseClassService: ItemBaseClassService, giftService: GiftService, raidTimeAdjustmentService: RaidTimeAdjustmentService, profileActivityService: ProfileActivityService, applicationContext: ApplicationContext, configServer: ConfigServer, cloner: ICloner); load(): void; /** * Handle client/game/start */ gameStart(_url: string, _info: IEmptyRequestData, sessionID: string, startTimeStampMS: number): void; + protected adjustHideoutCraftTimes(overrideSeconds: number): void; + /** + * Adjust all hideout craft times to be no higher than the override + */ + protected adjustHideoutBuildTimes(overrideSeconds: number): void; + protected adjustLocationBotValues(): void; /** * Out of date/incorrectly made trader mods forget this data */ protected checkTraderRepairValuesExist(): void; protected addCustomLooseLootPositions(): void; protected adjustLooseLootSpawnProbabilities(): void; - protected setHideoutAreasAndCraftsTo40Secs(): void; /** Apply custom limits on bot types as defined in configs/location.json/botTypeLimits */ protected adjustMapBotLimits(): void; /** * Handle client/game/config */ getGameConfig(sessionID: string): IGameConfigResponse; + /** + * Handle client/game/mode + */ + getGameMode(sessionID: string, info: IGameModeRequestData): any; /** * Handle client/server/list */ @@ -109,11 +125,10 @@ export declare class GameController { * @param pmcProfile Player profile */ protected warnOnActiveBotReloadSkill(pmcProfile: IPmcData): void; - protected flagAllItemsInDbAsSellableOnFlea(): void; + protected setAllDbItemsAsSellableOnFlea(): void; /** * When player logs in, iterate over all active effects and reduce timer - * TODO - add body part HP regen - * @param pmcProfile + * @param pmcProfile Profile to adjust values for */ protected updateProfileHealthValues(pmcProfile: IPmcData): void; /** @@ -130,16 +145,17 @@ export declare class GameController { */ protected sendPraporGiftsToNewProfiles(pmcProfile: IPmcData): void; /** - * Find and split waves with large numbers of bots into smaller waves - BSG appears to reduce the size of these waves to one bot when they're waiting to spawn for too long + * Find and split waves with large numbers of bots into smaller waves - BSG appears to reduce the size of these + * waves to one bot when they're waiting to spawn for too long */ protected splitBotWavesIntoSingleWaves(): void; /** * Get a list of installed mods and save their details to the profile being used * @param fullProfile Profile to add mod details to */ - protected saveActiveModsToProfile(fullProfile: IAkiProfile): void; + protected saveActiveModsToProfile(fullProfile: ISptProfile): void; /** - * Check for any missing assorts inside each traders assort.json data, checking against traders qeustassort.json + * Check for any missing assorts inside each traders assort.json data, checking against traders questassort.json */ protected validateQuestAssortUnlocksExist(): void; /** @@ -151,7 +167,7 @@ export declare class GameController { * Check for a dialog with the key 'undefined', and remove it * @param fullProfile Profile to check for dialog in */ - protected checkForAndRemoveUndefinedDialogs(fullProfile: IAkiProfile): void; + protected checkForAndRemoveUndefinedDialogs(fullProfile: ISptProfile): void; /** * Blank out the "test" mail message from prapor */ @@ -160,5 +176,5 @@ export declare class GameController { * Make non-trigger-spawned raiders spawn earlier + always */ protected adjustLabsRaiderSpawnRate(): void; - protected logProfileDetails(fullProfile: IAkiProfile): void; + protected logProfileDetails(fullProfile: ISptProfile): void; } diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/HandbookController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/HandbookController.d.ts index 4820f21..0743d30 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/HandbookController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/HandbookController.d.ts @@ -1,5 +1,5 @@ -import { HandbookHelper } from "@spt-aki/helpers/HandbookHelper"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; +import { HandbookHelper } from "@spt/helpers/HandbookHelper"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; export declare class HandbookController { protected databaseServer: DatabaseServer; protected handbookHelper: HandbookHelper; diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/HealthController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/HealthController.d.ts index 5206cba..5482283 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/HealthController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/HealthController.d.ts @@ -1,22 +1,21 @@ -import { HealthHelper } from "@spt-aki/helpers/HealthHelper"; -import { InventoryHelper } from "@spt-aki/helpers/InventoryHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IHealthTreatmentRequestData } from "@spt-aki/models/eft/health/IHealthTreatmentRequestData"; -import { IOffraidEatRequestData } from "@spt-aki/models/eft/health/IOffraidEatRequestData"; -import { IOffraidHealRequestData } from "@spt-aki/models/eft/health/IOffraidHealRequestData"; -import { ISyncHealthRequestData } from "@spt-aki/models/eft/health/ISyncHealthRequestData"; -import { IWorkoutData } from "@spt-aki/models/eft/health/IWorkoutData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { PaymentService } from "@spt-aki/services/PaymentService"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IHealthTreatmentRequestData } from "@spt/models/eft/health/IHealthTreatmentRequestData"; +import { IOffraidEatRequestData } from "@spt/models/eft/health/IOffraidEatRequestData"; +import { IOffraidHealRequestData } from "@spt/models/eft/health/IOffraidHealRequestData"; +import { ISyncHealthRequestData } from "@spt/models/eft/health/ISyncHealthRequestData"; +import { IWorkoutData } from "@spt/models/eft/health/IWorkoutData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { PaymentService } from "@spt/services/PaymentService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class HealthController { protected logger: ILogger; - protected jsonUtil: JsonUtil; protected eventOutputHolder: EventOutputHolder; protected itemHelper: ItemHelper; protected paymentService: PaymentService; @@ -24,7 +23,8 @@ export declare class HealthController { protected localisationService: LocalisationService; protected httpResponse: HttpResponseUtil; protected healthHelper: HealthHelper; - constructor(logger: ILogger, jsonUtil: JsonUtil, eventOutputHolder: EventOutputHolder, itemHelper: ItemHelper, paymentService: PaymentService, inventoryHelper: InventoryHelper, localisationService: LocalisationService, httpResponse: HttpResponseUtil, healthHelper: HealthHelper); + protected cloner: ICloner; + constructor(logger: ILogger, eventOutputHolder: EventOutputHolder, itemHelper: ItemHelper, paymentService: PaymentService, inventoryHelper: InventoryHelper, localisationService: LocalisationService, httpResponse: HttpResponseUtil, healthHelper: HealthHelper, cloner: ICloner); /** * stores in-raid player health * @param pmcData Player profile diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/HideoutController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/HideoutController.d.ts index 5595648..e9d1ed9 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/HideoutController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/HideoutController.d.ts @@ -1,50 +1,53 @@ -import { ScavCaseRewardGenerator } from "@spt-aki/generators/ScavCaseRewardGenerator"; -import { HideoutHelper } from "@spt-aki/helpers/HideoutHelper"; -import { InventoryHelper } from "@spt-aki/helpers/InventoryHelper"; -import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper"; -import { PresetHelper } from "@spt-aki/helpers/PresetHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { HideoutArea, Product } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { HideoutUpgradeCompleteRequestData } from "@spt-aki/models/eft/hideout/HideoutUpgradeCompleteRequestData"; -import { IHandleQTEEventRequestData } from "@spt-aki/models/eft/hideout/IHandleQTEEventRequestData"; -import { IHideoutArea, Stage } from "@spt-aki/models/eft/hideout/IHideoutArea"; -import { IHideoutCancelProductionRequestData } from "@spt-aki/models/eft/hideout/IHideoutCancelProductionRequestData"; -import { IHideoutContinuousProductionStartRequestData } from "@spt-aki/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; -import { IHideoutImproveAreaRequestData } from "@spt-aki/models/eft/hideout/IHideoutImproveAreaRequestData"; -import { IHideoutProduction } from "@spt-aki/models/eft/hideout/IHideoutProduction"; -import { IHideoutPutItemInRequestData } from "@spt-aki/models/eft/hideout/IHideoutPutItemInRequestData"; -import { IHideoutScavCaseStartRequestData } from "@spt-aki/models/eft/hideout/IHideoutScavCaseStartRequestData"; -import { IHideoutSingleProductionStartRequestData } from "@spt-aki/models/eft/hideout/IHideoutSingleProductionStartRequestData"; -import { IHideoutTakeItemOutRequestData } from "@spt-aki/models/eft/hideout/IHideoutTakeItemOutRequestData"; -import { IHideoutTakeProductionRequestData } from "@spt-aki/models/eft/hideout/IHideoutTakeProductionRequestData"; -import { IHideoutToggleAreaRequestData } from "@spt-aki/models/eft/hideout/IHideoutToggleAreaRequestData"; -import { IHideoutUpgradeRequestData } from "@spt-aki/models/eft/hideout/IHideoutUpgradeRequestData"; -import { IQteData } from "@spt-aki/models/eft/hideout/IQteData"; -import { IRecordShootingRangePoints } from "@spt-aki/models/eft/hideout/IRecordShootingRangePoints"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { HideoutAreas } from "@spt-aki/models/enums/HideoutAreas"; -import { IHideoutConfig } from "@spt-aki/models/spt/config/IHideoutConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { FenceService } from "@spt-aki/services/FenceService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { PlayerService } from "@spt-aki/services/PlayerService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { ScavCaseRewardGenerator } from "@spt/generators/ScavCaseRewardGenerator"; +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PaymentHelper } from "@spt/helpers/PaymentHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { HideoutArea, ITaskConditionCounter, Product } from "@spt/models/eft/common/tables/IBotBase"; +import { HideoutUpgradeCompleteRequestData } from "@spt/models/eft/hideout/HideoutUpgradeCompleteRequestData"; +import { IHandleQTEEventRequestData } from "@spt/models/eft/hideout/IHandleQTEEventRequestData"; +import { IHideoutArea, Stage } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutCancelProductionRequestData } from "@spt/models/eft/hideout/IHideoutCancelProductionRequestData"; +import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; +import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; +import { IHideoutScavCaseStartRequestData } from "@spt/models/eft/hideout/IHideoutScavCaseStartRequestData"; +import { IHideoutSingleProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutSingleProductionStartRequestData"; +import { IHideoutTakeItemOutRequestData } from "@spt/models/eft/hideout/IHideoutTakeItemOutRequestData"; +import { IHideoutTakeProductionRequestData } from "@spt/models/eft/hideout/IHideoutTakeProductionRequestData"; +import { IHideoutToggleAreaRequestData } from "@spt/models/eft/hideout/IHideoutToggleAreaRequestData"; +import { IHideoutUpgradeRequestData } from "@spt/models/eft/hideout/IHideoutUpgradeRequestData"; +import { IQteData } from "@spt/models/eft/hideout/IQteData"; +import { IRecordShootingRangePoints } from "@spt/models/eft/hideout/IRecordShootingRangePoints"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { HideoutAreas } from "@spt/models/enums/HideoutAreas"; +import { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { FenceService } from "@spt/services/FenceService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { PlayerService } from "@spt/services/PlayerService"; +import { ProfileActivityService } from "@spt/services/ProfileActivityService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class HideoutController { protected logger: ILogger; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected randomUtil: RandomUtil; protected inventoryHelper: InventoryHelper; + protected itemHelper: ItemHelper; protected saveServer: SaveServer; protected playerService: PlayerService; protected presetHelper: PresetHelper; @@ -55,30 +58,32 @@ export declare class HideoutController { protected hideoutHelper: HideoutHelper; protected scavCaseRewardGenerator: ScavCaseRewardGenerator; protected localisationService: LocalisationService; + protected profileActivityService: ProfileActivityService; protected configServer: ConfigServer; - protected jsonUtil: JsonUtil; protected fenceService: FenceService; - protected static nameBackendCountersCrafting: string; + protected cloner: ICloner; + /** Key used in TaskConditionCounters array */ + protected static nameTaskConditionCountersCrafting: string; protected hideoutConfig: IHideoutConfig; - constructor(logger: ILogger, hashUtil: HashUtil, timeUtil: TimeUtil, databaseServer: DatabaseServer, randomUtil: RandomUtil, inventoryHelper: InventoryHelper, saveServer: SaveServer, playerService: PlayerService, presetHelper: PresetHelper, paymentHelper: PaymentHelper, eventOutputHolder: EventOutputHolder, httpResponse: HttpResponseUtil, profileHelper: ProfileHelper, hideoutHelper: HideoutHelper, scavCaseRewardGenerator: ScavCaseRewardGenerator, localisationService: LocalisationService, configServer: ConfigServer, jsonUtil: JsonUtil, fenceService: FenceService); + constructor(logger: ILogger, hashUtil: HashUtil, timeUtil: TimeUtil, databaseService: DatabaseService, randomUtil: RandomUtil, inventoryHelper: InventoryHelper, itemHelper: ItemHelper, saveServer: SaveServer, playerService: PlayerService, presetHelper: PresetHelper, paymentHelper: PaymentHelper, eventOutputHolder: EventOutputHolder, httpResponse: HttpResponseUtil, profileHelper: ProfileHelper, hideoutHelper: HideoutHelper, scavCaseRewardGenerator: ScavCaseRewardGenerator, localisationService: LocalisationService, profileActivityService: ProfileActivityService, configServer: ConfigServer, fenceService: FenceService, cloner: ICloner); /** * Handle HideoutUpgrade event * Start a hideout area upgrade * @param pmcData Player profile * @param request upgrade start request * @param sessionID Session id - * @returns IItemEventRouterResponse + * @param output Client response */ - startUpgrade(pmcData: IPmcData, request: IHideoutUpgradeRequestData, sessionID: string): IItemEventRouterResponse; + startUpgrade(pmcData: IPmcData, request: IHideoutUpgradeRequestData, sessionID: string, output: IItemEventRouterResponse): void; /** * Handle HideoutUpgradeComplete event * Complete a hideout area upgrade * @param pmcData Player profile * @param request Completed upgrade request * @param sessionID Session id - * @returns IItemEventRouterResponse + * @param output Client response */ - upgradeComplete(pmcData: IPmcData, request: HideoutUpgradeCompleteRequestData, sessionID: string): IItemEventRouterResponse; + upgradeComplete(pmcData: IPmcData, request: HideoutUpgradeCompleteRequestData, sessionID: string, output: IItemEventRouterResponse): void; /** * Upgrade wall status to visible in profile if medstation/water collector are both level 1 * @param pmcData Player profile @@ -202,26 +207,23 @@ export declare class HideoutController { * @param pmcData Player profile * @param request Remove production from area request * @param output Output object to update - * @returns IItemEventRouterResponse */ - protected handleRecipe(sessionID: string, recipe: IHideoutProduction, pmcData: IPmcData, request: IHideoutTakeProductionRequestData, output: IItemEventRouterResponse): IItemEventRouterResponse; + protected handleRecipe(sessionID: string, recipe: IHideoutProduction, pmcData: IPmcData, request: IHideoutTakeProductionRequestData, output: IItemEventRouterResponse): void; + /** + * Get the "CounterHoursCrafting" TaskConditionCounter from a profile + * @param pmcData Profile to get counter from + * @param recipe Recipe being crafted + * @returns ITaskConditionCounter + */ + protected getHoursCraftingTaskConditionCounter(pmcData: IPmcData, recipe: IHideoutProduction): ITaskConditionCounter; /** * Handles generating case rewards and sending to player inventory * @param sessionID Session id * @param pmcData Player profile * @param request Get rewards from scavcase craft request * @param output Output object to update - * @returns IItemEventRouterResponse */ - protected handleScavCase(sessionID: string, pmcData: IPmcData, request: IHideoutTakeProductionRequestData, output: IItemEventRouterResponse): IItemEventRouterResponse; - /** - * Start area production for item by adding production to profiles' Hideout.Production array - * @param pmcData Player profile - * @param request Start production request - * @param sessionID Session id - * @returns IItemEventRouterResponse - */ - registerProduction(pmcData: IPmcData, request: IHideoutSingleProductionStartRequestData | IHideoutContinuousProductionStartRequestData, sessionID: string): IItemEventRouterResponse; + protected handleScavCase(sessionID: string, pmcData: IPmcData, request: IHideoutTakeProductionRequestData, output: IItemEventRouterResponse): void; /** * Get quick time event list for hideout * // TODO - implement this @@ -236,7 +238,7 @@ export declare class HideoutController { * @param pmcData Profile to adjust * @param request QTE result object */ - handleQTEEventOutcome(sessionId: string, pmcData: IPmcData, request: IHandleQTEEventRequestData): IItemEventRouterResponse; + handleQTEEventOutcome(sessionId: string, pmcData: IPmcData, request: IHandleQTEEventRequestData, output: IItemEventRouterResponse): void; /** * Record a high score from the shooting range into a player profiles overallcounters * @param sessionId Session id @@ -244,7 +246,7 @@ export declare class HideoutController { * @param request shooting range score request * @returns IItemEventRouterResponse */ - recordShootingRangePoints(sessionId: string, pmcData: IPmcData, request: IRecordShootingRangePoints): IItemEventRouterResponse; + recordShootingRangePoints(sessionId: string, pmcData: IPmcData, request: IRecordShootingRangePoints): void; /** * Handle client/game/profile/items/moving - HideoutImproveArea * @param sessionId Session id diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/InraidController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/InraidController.d.ts index 8ec13ba..87f419b 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/InraidController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/InraidController.d.ts @@ -1,35 +1,45 @@ -import { ApplicationContext } from "@spt-aki/context/ApplicationContext"; -import { PlayerScavGenerator } from "@spt-aki/generators/PlayerScavGenerator"; -import { HealthHelper } from "@spt-aki/helpers/HealthHelper"; -import { InRaidHelper } from "@spt-aki/helpers/InRaidHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { QuestHelper } from "@spt-aki/helpers/QuestHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IRegisterPlayerRequestData } from "@spt-aki/models/eft/inRaid/IRegisterPlayerRequestData"; -import { ISaveProgressRequestData } from "@spt-aki/models/eft/inRaid/ISaveProgressRequestData"; -import { PlayerRaidEndState } from "@spt-aki/models/enums/PlayerRaidEndState"; -import { IAirdropConfig } from "@spt-aki/models/spt/config/IAirdropConfig"; -import { IInRaidConfig } from "@spt-aki/models/spt/config/IInRaidConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { InsuranceService } from "@spt-aki/services/InsuranceService"; -import { MatchBotDetailsCacheService } from "@spt-aki/services/MatchBotDetailsCacheService"; -import { PmcChatResponseService } from "@spt-aki/services/PmcChatResponseService"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { QuestHelper } from "@spt/helpers/QuestHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IRegisterPlayerRequestData } from "@spt/models/eft/inRaid/IRegisterPlayerRequestData"; +import { ISaveProgressRequestData } from "@spt/models/eft/inRaid/ISaveProgressRequestData"; +import { PlayerRaidEndState } from "@spt/models/enums/PlayerRaidEndState"; +import { IAirdropConfig } from "@spt/models/spt/config/IAirdropConfig"; +import { IBTRConfig } from "@spt/models/spt/config/IBTRConfig"; +import { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig"; +import { ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; +import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { InsuranceService } from "@spt/services/InsuranceService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { MailSendService } from "@spt/services/MailSendService"; +import { MatchBotDetailsCacheService } from "@spt/services/MatchBotDetailsCacheService"; +import { PmcChatResponseService } from "@spt/services/PmcChatResponseService"; +import { TraderServicesService } from "@spt/services/TraderServicesService"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; /** * Logic for handling In Raid callbacks */ export declare class InraidController { protected logger: ILogger; protected saveServer: SaveServer; - protected jsonUtil: JsonUtil; protected timeUtil: TimeUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected pmcChatResponseService: PmcChatResponseService; protected matchBotDetailsCacheService: MatchBotDetailsCacheService; protected questHelper: QuestHelper; @@ -38,13 +48,23 @@ export declare class InraidController { protected playerScavGenerator: PlayerScavGenerator; protected healthHelper: HealthHelper; protected traderHelper: TraderHelper; + protected traderServicesService: TraderServicesService; + protected localisationService: LocalisationService; protected insuranceService: InsuranceService; protected inRaidHelper: InRaidHelper; protected applicationContext: ApplicationContext; protected configServer: ConfigServer; + protected mailSendService: MailSendService; + protected randomUtil: RandomUtil; protected airdropConfig: IAirdropConfig; - protected inraidConfig: IInRaidConfig; - constructor(logger: ILogger, saveServer: SaveServer, jsonUtil: JsonUtil, timeUtil: TimeUtil, databaseServer: DatabaseServer, pmcChatResponseService: PmcChatResponseService, matchBotDetailsCacheService: MatchBotDetailsCacheService, questHelper: QuestHelper, itemHelper: ItemHelper, profileHelper: ProfileHelper, playerScavGenerator: PlayerScavGenerator, healthHelper: HealthHelper, traderHelper: TraderHelper, insuranceService: InsuranceService, inRaidHelper: InRaidHelper, applicationContext: ApplicationContext, configServer: ConfigServer); + protected btrConfig: IBTRConfig; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected locationConfig: ILocationConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected botConfig: IBotConfig; + constructor(logger: ILogger, saveServer: SaveServer, timeUtil: TimeUtil, databaseService: DatabaseService, pmcChatResponseService: PmcChatResponseService, matchBotDetailsCacheService: MatchBotDetailsCacheService, questHelper: QuestHelper, itemHelper: ItemHelper, profileHelper: ProfileHelper, playerScavGenerator: PlayerScavGenerator, healthHelper: HealthHelper, traderHelper: TraderHelper, traderServicesService: TraderServicesService, localisationService: LocalisationService, insuranceService: InsuranceService, inRaidHelper: InRaidHelper, applicationContext: ApplicationContext, configServer: ConfigServer, mailSendService: MailSendService, randomUtil: RandomUtil); /** * Save locationId to active profiles inraid object AND app context * @param sessionID Session id @@ -66,8 +86,8 @@ export declare class InraidController { */ protected savePmcProgress(sessionID: string, postRaidRequest: ISaveProgressRequestData): void; /** - * Make changes to pmc profile after they've died in raid, - * Alter bodypart hp, handle insurance, delete inventory items, remove carried quest items + * Make changes to PMC profile after they've died in raid, + * Alter body part hp, handle insurance, delete inventory items, remove carried quest items * @param postRaidSaveRequest Post-raid save request * @param pmcData Pmc profile * @param sessionID Session id @@ -75,7 +95,7 @@ export declare class InraidController { */ protected performPostRaidActionsWhenDead(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData, sessionID: string): IPmcData; /** - * Adjust player characters bodypart hp post-raid + * Adjust player characters body part hp post-raid * @param postRaidSaveRequest post raid data * @param pmcData player profile */ @@ -83,15 +103,29 @@ export declare class InraidController { /** * Reduce body part hp to % of max * @param pmcData profile to edit - * @param multipler multipler to apply to max health + * @param multiplier multiplier to apply to max health */ - protected reducePmcHealthToPercent(pmcData: IPmcData, multipler: number): void; + protected reducePmcHealthToPercent(pmcData: IPmcData, multiplier: number): void; /** * Handle updating the profile post-pscav raid * @param sessionID Session id * @param postRaidRequest Post-raid data of raid */ protected savePlayerScavProgress(sessionID: string, postRaidRequest: ISaveProgressRequestData): void; + /** + * merge two dictionaries together + * Prioritise pair that has true as a value + * @param primary main dictionary + * @param secondary Secondary dictionary + */ + protected mergePmcAndScavEncyclopedias(primary: IPmcData, secondary: IPmcData): void; + /** + * Post-scav-raid any charisma increase must be propigated into PMC profile + * @param postRaidServerScavProfile Scav profile after adjustments made from raid + * @param postRaidServerPmcProfile Pmc profile after raid + * @param preRaidScavCharismaProgress charisma progress value pre-raid + */ + protected updatePmcCharismaSkillPostScavRaid(postRaidServerScavProfile: IPmcData, postRaidServerPmcProfile: IPmcData, preRaidScavCharismaProgress: number): void; /** * Does provided profile contain any condition counters * @param profile Profile to check for condition counters @@ -128,8 +162,9 @@ export declare class InraidController { * Update profile with scav karma values based on in-raid actions * @param pmcData Pmc profile * @param offraidData Post-raid save request + * @param scavData Scav profile */ - protected handlePostRaidPlayerScavKarmaChanges(pmcData: IPmcData, offraidData: ISaveProgressRequestData): void; + protected handlePostRaidPlayerScavKarmaChanges(pmcData: IPmcData, offraidData: ISaveProgressRequestData, scavData: IPmcData): void; /** * Get the inraid config from configs/inraid.json * @returns InRaid Config @@ -140,4 +175,21 @@ export declare class InraidController { * @returns Airdrop config */ getAirdropConfig(): IAirdropConfig; + /** + * Get BTR config from configs/btr.json + * @returns Airdrop config + */ + getBTRConfig(): IBTRConfig; + /** + * Handle singleplayer/traderServices/getTraderServices + * @returns Trader services data + */ + getTraderServices(sessionId: string, traderId: string): ITraderServiceModel[]; + /** + * Handle singleplayer/traderServices/itemDelivery + */ + itemDelivery(sessionId: string, traderId: string, items: Item[]): void; + getTraitorScavHostileChance(url: string, sessionID: string): number; + getSandboxMaxPatrolValue(url: string, sessionID: string): number; + getBossConvertSettings(url: string, sessionId: string): string[]; } diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/InsuranceController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/InsuranceController.d.ts index 64c2ae8..f921b83 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/InsuranceController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/InsuranceController.d.ts @@ -1,43 +1,54 @@ -import { DialogueHelper } from "@spt-aki/helpers/DialogueHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { IGetInsuranceCostRequestData } from "@spt-aki/models/eft/insurance/IGetInsuranceCostRequestData"; -import { IGetInsuranceCostResponseData } from "@spt-aki/models/eft/insurance/IGetInsuranceCostResponseData"; -import { IInsureRequestData } from "@spt-aki/models/eft/insurance/IInsureRequestData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { ISystemData, Insurance } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { IInsuranceConfig } from "@spt-aki/models/spt/config/IInsuranceConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { InsuranceService } from "@spt-aki/services/InsuranceService"; -import { MailSendService } from "@spt-aki/services/MailSendService"; -import { PaymentService } from "@spt-aki/services/PaymentService"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { DialogueHelper } from "@spt/helpers/DialogueHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IGetInsuranceCostRequestData } from "@spt/models/eft/insurance/IGetInsuranceCostRequestData"; +import { IGetInsuranceCostResponseData } from "@spt/models/eft/insurance/IGetInsuranceCostResponseData"; +import { IInsureRequestData } from "@spt/models/eft/insurance/IInsureRequestData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { Insurance } from "@spt/models/eft/profile/ISptProfile"; +import { IInsuranceConfig } from "@spt/models/spt/config/IInsuranceConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { InsuranceService } from "@spt/services/InsuranceService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { MailSendService } from "@spt/services/MailSendService"; +import { PaymentService } from "@spt/services/PaymentService"; +import { RagfairPriceService } from "@spt/services/RagfairPriceService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { MathUtil } from "@spt/utils/MathUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class InsuranceController { protected logger: ILogger; protected randomUtil: RandomUtil; + protected mathUtil: MathUtil; + protected hashUtil: HashUtil; protected eventOutputHolder: EventOutputHolder; protected timeUtil: TimeUtil; protected saveServer: SaveServer; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; protected dialogueHelper: DialogueHelper; + protected weightedRandomHelper: WeightedRandomHelper; protected traderHelper: TraderHelper; protected paymentService: PaymentService; protected insuranceService: InsuranceService; protected mailSendService: MailSendService; + protected ragfairPriceService: RagfairPriceService; + protected localisationService: LocalisationService; protected configServer: ConfigServer; + protected cloner: ICloner; protected insuranceConfig: IInsuranceConfig; - protected roubleTpl: string; - constructor(logger: ILogger, randomUtil: RandomUtil, eventOutputHolder: EventOutputHolder, timeUtil: TimeUtil, saveServer: SaveServer, databaseServer: DatabaseServer, itemHelper: ItemHelper, profileHelper: ProfileHelper, dialogueHelper: DialogueHelper, traderHelper: TraderHelper, paymentService: PaymentService, insuranceService: InsuranceService, mailSendService: MailSendService, configServer: ConfigServer); + constructor(logger: ILogger, randomUtil: RandomUtil, mathUtil: MathUtil, hashUtil: HashUtil, eventOutputHolder: EventOutputHolder, timeUtil: TimeUtil, saveServer: SaveServer, databaseService: DatabaseService, itemHelper: ItemHelper, profileHelper: ProfileHelper, dialogueHelper: DialogueHelper, weightedRandomHelper: WeightedRandomHelper, traderHelper: TraderHelper, paymentService: PaymentService, insuranceService: InsuranceService, mailSendService: MailSendService, ragfairPriceService: RagfairPriceService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); /** * Process insurance items of all profiles prior to being given back to the player through the mail service. * @@ -66,6 +77,12 @@ export declare class InsuranceController { * @returns void */ protected processInsuredItems(insuranceDetails: Insurance[], sessionID: string): void; + /** + * Count all items in all insurance packages. + * @param insurance + * @returns + */ + protected countAllInsuranceItems(insurance: Insurance[]): number; /** * Remove an insurance package from a profile using the package's system data information. * @@ -73,31 +90,35 @@ export declare class InsuranceController { * @param index The array index of the insurance package to remove. * @returns void */ - protected removeInsurancePackageFromProfile(sessionID: string, packageInfo: ISystemData): void; + protected removeInsurancePackageFromProfile(sessionID: string, insPackage: Insurance): void; /** * Finds the items that should be deleted based on the given Insurance object. * - * @param insured The insurance object containing the items to evaluate for deletion. + * @param rootItemParentID - The ID that should be assigned to all "hideout"/root items. + * @param insured - The insurance object containing the items to evaluate for deletion. * @returns A Set containing the IDs of items that should be deleted. */ - protected findItemsToDelete(insured: Insurance): Set; - /** - * Populate a Map object of items for quick lookup by their ID. - * - * @param insured The insurance object containing the items to populate the map with. - * @returns A Map where the keys are the item IDs and the values are the corresponding Item objects. - */ - protected populateItemsMap(insured: Insurance): Map; + protected findItemsToDelete(rootItemParentID: string, insured: Insurance): Set; /** * Initialize a Map object 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). * + * @param rootItemParentID - The ID that should be assigned to all "hideout"/root items. * @param insured - The insurance object containing the items to evaluate. * @param itemsMap - A Map object for quick item look-up by item ID. * @returns A Map object containing parent item IDs to arrays of their attachment items. */ - protected populateParentAttachmentsMap(insured: Insurance, itemsMap: Map): Map; + protected populateParentAttachmentsMap(rootItemParentID: string, insured: Insurance, itemsMap: Map): Map; + /** + * 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. + * + * @param parentAttachmentsMap - A Map object containing parent item IDs to arrays of their attachment items. + * @param itemsMap - A Map object for quick item look-up by item ID. + * @returns A Map object containing parent item IDs to arrays of their attachment items which are not moddable in-raid. + */ + protected removeNonModdableAttachments(parentAttachmentsMap: Map, itemsMap: Map): Map; /** * 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, @@ -105,15 +126,13 @@ export declare class InsuranceController { * * @param insured The insurance object containing the items to evaluate. * @param toDelete A Set to keep track of items marked for deletion. + * @param parentAttachmentsMap A Map object containing parent item IDs to arrays of their attachment items. * @returns void */ - protected processRegularItems(insured: Insurance, toDelete: Set): void; + protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; /** * Process parent items and their attachments, updating the toDelete Set accordingly. * - * This method iterates over a map of parent items to their attachments and performs evaluations on each. - * It marks items for deletion based on certain conditions and updates the toDelete Set accordingly. - * * @param mainParentToAttachmentsMap A Map object containing parent item IDs to arrays of their attachment items. * @param itemsMap A Map object for quick item look-up by item ID. * @param traderId The trader ID from the Insurance object. @@ -132,35 +151,15 @@ export declare class InsuranceController { * @returns void */ protected processAttachmentByParent(attachments: Item[], traderId: string, toDelete: Set): void; + protected logAttachmentsBeingRemoved(attachmentIdsToRemove: string[], attachments: Item[], attachmentPrices: Record): void; + protected weightAttachmentsByPrice(attachments: Item[]): Record; /** - * Sorts the attachment items by their max price in descending order. - * - * @param attachments The array of attachments items. - * @returns An array of items enriched with their max price and common locale-name. + * Get count of items to remove from weapon (take into account trader + price of attachment) + * @param weightedAttachmentByPrice Dict of item Tpls and thier rouble price + * @param traderId Trader attachment insured against + * @returns Attachment count to remove */ - protected sortAttachmentsByPrice(attachments: Item[]): EnrichedItem[]; - /** - * Logs the details of each attachment item. - * - * @param attachments The array of attachment items. - */ - protected logAttachmentsDetails(attachments: EnrichedItem[]): void; - /** - * Counts the number of successful rolls for the attachment items. - * - * @param attachments The array of attachment items. - * @param traderId The ID of the trader that has insured these attachments. - * @returns The number of successful rolls. - */ - protected countSuccessfulRolls(attachments: Item[], traderId: string): number; - /** - * Marks the most valuable attachments for deletion based on the number of successful rolls made. - * - * @param attachments The array of attachment items. - * @param successfulRolls The number of successful rolls. - * @param toDelete The array that accumulates the IDs of the items to be deleted. - */ - protected attachmentDeletionByValue(attachments: EnrichedItem[], successfulRolls: number, toDelete: Set): void; + protected getAttachmentCountToRemove(weightedAttachmentByPrice: Record, traderId: string): number; /** * Remove items from the insured items that should not be returned to the player. * @@ -169,40 +168,23 @@ export declare class InsuranceController { * @returns void */ protected removeItemsFromInsurance(insured: Insurance, toDelete: Set): void; - /** - * Adopts orphaned items by resetting them as base-level items. Helpful in situations where a parent has been - * deleted from insurance, but any insured items within the parent should remain. This method will remove the - * reference from the children to the parent and set item properties to main-level values. - * - * @param insured Insurance object containing items. - */ - protected adoptOrphanedItems(insured: Insurance): void; - /** - * Fetches the parentId property of an item with a slotId "hideout". Not sure if this is actually dynamic, but this - * method should be a reliable way to fetch it, if it ever does change. - * - * @param items Array of items to search through. - * @returns The parentId of an item with slotId 'hideout'. Empty string if not found. - */ - protected fetchHideoutItemParent(items: Item[]): string; /** * Handle sending the insurance message to the user that potentially contains the valid insurance items. * * @param sessionID The session ID that should receive the insurance message. * @param insurance The context of insurance to use. - * @param noItems Whether or not there are any items to return to the player. * @returns void */ - protected sendMail(sessionID: string, insurance: Insurance, noItems: boolean): void; + protected sendMail(sessionID: string, insurance: Insurance): void; /** - * Determines whether a insured item should be removed from the player's inventory based on a random roll and + * Determines whether an insured item should be removed from the player's inventory based on a random roll and * trader-specific return chance. * * @param traderId The ID of the trader who insured the item. * @param insuredItem Optional. The item to roll for. Only used for logging. - * @returns true if the insured item should be removed from inventory, false otherwise. + * @returns true if the insured item should be removed from inventory, false otherwise, or undefined on error. */ - protected rollForDelete(traderId: string, insuredItem?: Item): boolean; + protected rollForDelete(traderId: string, insuredItem?: Item): boolean | undefined; /** * Handle Insure event * Add insurance to an item @@ -223,8 +205,3 @@ export declare class InsuranceController { */ cost(request: IGetInsuranceCostRequestData, sessionID: string): IGetInsuranceCostResponseData; } -interface EnrichedItem extends Item { - name: string; - maxPrice: number; -} -export {}; diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/InventoryController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/InventoryController.d.ts index 02e2127..40bb084 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/InventoryController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/InventoryController.d.ts @@ -1,61 +1,69 @@ -import { LootGenerator } from "@spt-aki/generators/LootGenerator"; -import { InventoryHelper } from "@spt-aki/helpers/InventoryHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper"; -import { PresetHelper } from "@spt-aki/helpers/PresetHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { QuestHelper } from "@spt-aki/helpers/QuestHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IInventoryBindRequestData } from "@spt-aki/models/eft/inventory/IInventoryBindRequestData"; -import { IInventoryCreateMarkerRequestData } from "@spt-aki/models/eft/inventory/IInventoryCreateMarkerRequestData"; -import { IInventoryDeleteMarkerRequestData } from "@spt-aki/models/eft/inventory/IInventoryDeleteMarkerRequestData"; -import { IInventoryEditMarkerRequestData } from "@spt-aki/models/eft/inventory/IInventoryEditMarkerRequestData"; -import { IInventoryExamineRequestData } from "@spt-aki/models/eft/inventory/IInventoryExamineRequestData"; -import { IInventoryFoldRequestData } from "@spt-aki/models/eft/inventory/IInventoryFoldRequestData"; -import { IInventoryMergeRequestData } from "@spt-aki/models/eft/inventory/IInventoryMergeRequestData"; -import { IInventoryMoveRequestData } from "@spt-aki/models/eft/inventory/IInventoryMoveRequestData"; -import { IInventoryReadEncyclopediaRequestData } from "@spt-aki/models/eft/inventory/IInventoryReadEncyclopediaRequestData"; -import { IInventoryRemoveRequestData } from "@spt-aki/models/eft/inventory/IInventoryRemoveRequestData"; -import { IInventorySortRequestData } from "@spt-aki/models/eft/inventory/IInventorySortRequestData"; -import { IInventorySplitRequestData } from "@spt-aki/models/eft/inventory/IInventorySplitRequestData"; -import { IInventorySwapRequestData } from "@spt-aki/models/eft/inventory/IInventorySwapRequestData"; -import { IInventoryTagRequestData } from "@spt-aki/models/eft/inventory/IInventoryTagRequestData"; -import { IInventoryToggleRequestData } from "@spt-aki/models/eft/inventory/IInventoryToggleRequestData"; -import { IInventoryTransferRequestData } from "@spt-aki/models/eft/inventory/IInventoryTransferRequestData"; -import { IOpenRandomLootContainerRequestData } from "@spt-aki/models/eft/inventory/IOpenRandomLootContainerRequestData"; -import { IRedeemProfileRequestData } from "@spt-aki/models/eft/inventory/IRedeemProfileRequestData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { FenceService } from "@spt-aki/services/FenceService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { PlayerService } from "@spt-aki/services/PlayerService"; -import { RagfairOfferService } from "@spt-aki/services/RagfairOfferService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PaymentHelper } from "@spt/helpers/PaymentHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { QuestHelper } from "@spt/helpers/QuestHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IInventoryBindRequestData } from "@spt/models/eft/inventory/IInventoryBindRequestData"; +import { IInventoryCreateMarkerRequestData } from "@spt/models/eft/inventory/IInventoryCreateMarkerRequestData"; +import { IInventoryDeleteMarkerRequestData } from "@spt/models/eft/inventory/IInventoryDeleteMarkerRequestData"; +import { IInventoryEditMarkerRequestData } from "@spt/models/eft/inventory/IInventoryEditMarkerRequestData"; +import { IInventoryExamineRequestData } from "@spt/models/eft/inventory/IInventoryExamineRequestData"; +import { IInventoryFoldRequestData } from "@spt/models/eft/inventory/IInventoryFoldRequestData"; +import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData"; +import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData"; +import { IInventoryReadEncyclopediaRequestData } from "@spt/models/eft/inventory/IInventoryReadEncyclopediaRequestData"; +import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData"; +import { IInventorySortRequestData } from "@spt/models/eft/inventory/IInventorySortRequestData"; +import { IInventorySplitRequestData } from "@spt/models/eft/inventory/IInventorySplitRequestData"; +import { IInventorySwapRequestData } from "@spt/models/eft/inventory/IInventorySwapRequestData"; +import { IInventoryTagRequestData } from "@spt/models/eft/inventory/IInventoryTagRequestData"; +import { IInventoryToggleRequestData } from "@spt/models/eft/inventory/IInventoryToggleRequestData"; +import { IInventoryTransferRequestData } from "@spt/models/eft/inventory/IInventoryTransferRequestData"; +import { IOpenRandomLootContainerRequestData } from "@spt/models/eft/inventory/IOpenRandomLootContainerRequestData"; +import { IRedeemProfileRequestData } from "@spt/models/eft/inventory/IRedeemProfileRequestData"; +import { ISetFavoriteItems } from "@spt/models/eft/inventory/ISetFavoriteItems"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { FenceService } from "@spt/services/FenceService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { MapMarkerService } from "@spt/services/MapMarkerService"; +import { PlayerService } from "@spt/services/PlayerService"; +import { RagfairOfferService } from "@spt/services/RagfairOfferService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class InventoryController { protected logger: ILogger; protected hashUtil: HashUtil; - protected jsonUtil: JsonUtil; protected itemHelper: ItemHelper; protected randomUtil: RandomUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected fenceService: FenceService; protected presetHelper: PresetHelper; protected inventoryHelper: InventoryHelper; protected questHelper: QuestHelper; + protected hideoutHelper: HideoutHelper; protected ragfairOfferService: RagfairOfferService; + protected mapMarkerService: MapMarkerService; protected profileHelper: ProfileHelper; protected paymentHelper: PaymentHelper; + protected traderHelper: TraderHelper; protected localisationService: LocalisationService; protected playerService: PlayerService; protected lootGenerator: LootGenerator; protected eventOutputHolder: EventOutputHolder; protected httpResponseUtil: HttpResponseUtil; - constructor(logger: ILogger, hashUtil: HashUtil, jsonUtil: JsonUtil, itemHelper: ItemHelper, randomUtil: RandomUtil, databaseServer: DatabaseServer, fenceService: FenceService, presetHelper: PresetHelper, inventoryHelper: InventoryHelper, questHelper: QuestHelper, ragfairOfferService: RagfairOfferService, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, playerService: PlayerService, lootGenerator: LootGenerator, eventOutputHolder: EventOutputHolder, httpResponseUtil: HttpResponseUtil); + protected cloner: ICloner; + constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, randomUtil: RandomUtil, databaseService: DatabaseService, fenceService: FenceService, presetHelper: PresetHelper, inventoryHelper: InventoryHelper, questHelper: QuestHelper, hideoutHelper: HideoutHelper, ragfairOfferService: RagfairOfferService, mapMarkerService: MapMarkerService, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, traderHelper: TraderHelper, localisationService: LocalisationService, playerService: PlayerService, lootGenerator: LootGenerator, eventOutputHolder: EventOutputHolder, httpResponseUtil: HttpResponseUtil, cloner: ICloner); /** * Move Item * change location of item with parentId and slotId @@ -64,55 +72,52 @@ export declare class InventoryController { * @param pmcData Profile * @param moveRequest Move request data * @param sessionID Session id - * @returns IItemEventRouterResponse + * @param output Client response */ - moveItem(pmcData: IPmcData, moveRequest: IInventoryMoveRequestData, sessionID: string): IItemEventRouterResponse; + moveItem(pmcData: IPmcData, moveRequest: IInventoryMoveRequestData, sessionID: string, output: IItemEventRouterResponse): void; /** * Get a event router response with inventory trader message * @param output Item event router response * @returns Item event router response */ - protected getTraderExploitErrorResponse(output: IItemEventRouterResponse): IItemEventRouterResponse; - /** - * Remove Item from Profile - * Deep tree item deletion, also removes items from insurance list - */ - removeItem(pmcData: IPmcData, itemId: string, sessionID: string, output?: IItemEventRouterResponse): IItemEventRouterResponse; + protected appendTraderExploitErrorResponse(output: IItemEventRouterResponse): void; /** * Handle Remove event * Implements functionality "Discard" from Main menu (Stash etc.) * Removes item from PMC Profile */ - discardItem(pmcData: IPmcData, body: IInventoryRemoveRequestData, sessionID: string): IItemEventRouterResponse; + discardItem(pmcData: IPmcData, request: IInventoryRemoveRequestData, sessionID: string, output: IItemEventRouterResponse): void; /** * Split Item * spliting 1 stack into 2 * @param pmcData Player profile (unused, getOwnerInventoryItems() gets profile) * @param request Split request * @param sessionID Session/player id + * @param output Client response * @returns IItemEventRouterResponse */ - splitItem(pmcData: IPmcData, request: IInventorySplitRequestData, sessionID: string): IItemEventRouterResponse; + splitItem(pmcData: IPmcData, request: IInventorySplitRequestData, sessionID: string, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * 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` * @param pmcData Player profile (unused, getOwnerInventoryItems() gets profile) * @param body Merge request * @param sessionID Player id + * @param output Client response * @returns IItemEventRouterResponse */ - mergeItem(pmcData: IPmcData, body: IInventoryMergeRequestData, sessionID: string): IItemEventRouterResponse; + mergeItem(pmcData: IPmcData, body: IInventoryMergeRequestData, sessionID: string, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * TODO: Adds no data to output to send to client, is this by design? - * TODO: should make use of getOwnerInventoryItems(), stack being transferred may not always be on pmc * 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" * @param pmcData Player profile * @param body Transfer request * @param sessionID Session id + * @param output Client response * @returns IItemEventRouterResponse */ - transferItem(pmcData: IPmcData, body: IInventoryTransferRequestData, sessionID: string): IItemEventRouterResponse; + transferItem(pmcData: IPmcData, body: IInventoryTransferRequestData, sessionID: string, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * Swap Item * its used for "reload" if you have weapon in hands and magazine is somewhere else in rig or backpack in equipment @@ -122,7 +127,7 @@ export declare class InventoryController { /** * Handles folding of Weapons */ - foldItem(pmcData: IPmcData, body: IInventoryFoldRequestData, sessionID: string): IItemEventRouterResponse; + foldItem(pmcData: IPmcData, request: IInventoryFoldRequestData, sessionID: string): IItemEventRouterResponse; /** * Toggles "Toggleable" items like night vision goggles and face shields. * @param pmcData player profile @@ -147,31 +152,37 @@ export declare class InventoryController { * @param sessionID Session id * @returns IItemEventRouterResponse */ - bindItem(pmcData: IPmcData, bindRequest: IInventoryBindRequestData, sessionID: string): IItemEventRouterResponse; + bindItem(pmcData: IPmcData, bindRequest: IInventoryBindRequestData, sessionID: string): void; /** * Unbind an inventory item from quick access menu at bottom of player screen * Handle unbind event * @param pmcData Player profile * @param bindRequest Request object * @param sessionID Session id - * @returns IItemEventRouterResponse + * @param output Client response */ - unbindItem(pmcData: IPmcData, request: IInventoryBindRequestData, sessionID: string): IItemEventRouterResponse; + unbindItem(pmcData: IPmcData, request: IInventoryBindRequestData, sessionID: string, output: IItemEventRouterResponse): void; /** * Handles examining an item * @param pmcData player profile * @param body request object * @param sessionID session id + * @param output Client response * @returns response */ - examineItem(pmcData: IPmcData, body: IInventoryExamineRequestData, sessionID: string): IItemEventRouterResponse; - protected flagItemsAsInspectedAndRewardXp(itemTpls: string[], pmcProfile: IPmcData): void; + examineItem(pmcData: IPmcData, body: IInventoryExamineRequestData, sessionID: string, output: IItemEventRouterResponse): IItemEventRouterResponse; + /** + * Flag an item as seen in profiles encyclopedia + add inspect xp to profile + * @param itemTpls Inspected item tpls + * @param fullProfile Profile to add xp to + */ + protected flagItemsAsInspectedAndRewardXp(itemTpls: string[], fullProfile: ISptProfile): void; /** * Get the tplid of an item from the examine request object - * @param body response request - * @returns tplid + * @param request Response request + * @returns tplId */ - protected getExaminedItemTpl(body: IInventoryExamineRequestData): string; + protected getExaminedItemTpl(request: IInventoryExamineRequestData): string; readEncyclopedia(pmcData: IPmcData, body: IInventoryReadEncyclopediaRequestData, sessionID: string): IItemEventRouterResponse; /** * Handle ApplyInventoryChanges @@ -179,47 +190,42 @@ export declare class InventoryController { * @param pmcData Player profile * @param request sort request * @param sessionID Session id - * @returns IItemEventRouterResponse */ - sortInventory(pmcData: IPmcData, request: IInventorySortRequestData, sessionID: string): IItemEventRouterResponse; + sortInventory(pmcData: IPmcData, request: IInventorySortRequestData, sessionID: string): void; /** * Add note to a map * @param pmcData Player profile * @param request Add marker request * @param sessionID Session id + * @param output Client response * @returns IItemEventRouterResponse */ - createMapMarker(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData, sessionID: string): IItemEventRouterResponse; + createMapMarker(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData, sessionID: string, output: IItemEventRouterResponse): void; /** * Delete a map marker * @param pmcData Player profile * @param request Delete marker request * @param sessionID Session id - * @returns IItemEventRouterResponse + * @param output Client response */ - deleteMapMarker(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData, sessionID: string): IItemEventRouterResponse; + deleteMapMarker(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData, sessionID: string, output: IItemEventRouterResponse): void; /** * Edit an existing map marker * @param pmcData Player profile * @param request Edit marker request * @param sessionID Session id - * @returns IItemEventRouterResponse + * @param output Client response */ - editMapMarker(pmcData: IPmcData, request: IInventoryEditMarkerRequestData, sessionID: string): IItemEventRouterResponse; - /** - * Strip out characters from note string that are not: letter/numbers/unicode/spaces - * @param mapNoteText Marker text to sanitise - * @returns Sanitised map marker text - */ - protected sanitiseMapMarkerText(mapNoteText: string): string; + editMapMarker(pmcData: IPmcData, request: IInventoryEditMarkerRequestData, sessionID: string, output: IItemEventRouterResponse): void; /** * Handle OpenRandomLootContainer event * Handle event fired when a container is unpacked (currently only the halloween pumpkin) * @param pmcData Profile data - * @param body open loot container request data + * @param body Open loot container request data * @param sessionID Session id - * @returns IItemEventRouterResponse + * @param output Client response */ - openRandomLootContainer(pmcData: IPmcData, body: IOpenRandomLootContainerRequestData, sessionID: string): IItemEventRouterResponse; - redeemProfileReward(pmcData: IPmcData, request: IRedeemProfileRequestData, sessionId: string): IItemEventRouterResponse; + openRandomLootContainer(pmcData: IPmcData, body: IOpenRandomLootContainerRequestData, sessionID: string, output: IItemEventRouterResponse): void; + redeemProfileReward(pmcData: IPmcData, request: IRedeemProfileRequestData, sessionId: string): void; + setFavoriteItem(pmcData: IPmcData, request: ISetFavoriteItems, sessionId: string): void; } diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/LauncherController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/LauncherController.d.ts index 5de2416..789fc00 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/LauncherController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/LauncherController.d.ts @@ -1,43 +1,54 @@ -import { HttpServerHelper } from "@spt-aki/helpers/HttpServerHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { PreAkiModLoader } from "@spt-aki/loaders/PreAkiModLoader"; -import { IChangeRequestData } from "@spt-aki/models/eft/launcher/IChangeRequestData"; -import { ILoginRequestData } from "@spt-aki/models/eft/launcher/ILoginRequestData"; -import { IRegisterData } from "@spt-aki/models/eft/launcher/IRegisterData"; -import { Info, ModDetails } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { IConnectResponse } from "@spt-aki/models/eft/profile/IConnectResponse"; -import { ICoreConfig } from "@spt-aki/models/spt/config/ICoreConfig"; -import { IPackageJsonData } from "@spt-aki/models/spt/mod/IPackageJsonData"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; +import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; +import { IChangeRequestData } from "@spt/models/eft/launcher/IChangeRequestData"; +import { ILoginRequestData } from "@spt/models/eft/launcher/ILoginRequestData"; +import { IRegisterData } from "@spt/models/eft/launcher/IRegisterData"; +import { IConnectResponse } from "@spt/models/eft/profile/IConnectResponse"; +import { Info, ModDetails } from "@spt/models/eft/profile/ISptProfile"; +import { ICoreConfig } from "@spt/models/spt/config/ICoreConfig"; +import { IPackageJsonData } from "@spt/models/spt/mod/IPackageJsonData"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class LauncherController { protected logger: ILogger; protected hashUtil: HashUtil; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; protected saveServer: SaveServer; protected httpServerHelper: HttpServerHelper; protected profileHelper: ProfileHelper; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected localisationService: LocalisationService; - protected preAkiModLoader: PreAkiModLoader; + protected preSptModLoader: PreSptModLoader; protected configServer: ConfigServer; protected coreConfig: ICoreConfig; - constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, httpServerHelper: HttpServerHelper, profileHelper: ProfileHelper, databaseServer: DatabaseServer, localisationService: LocalisationService, preAkiModLoader: PreAkiModLoader, configServer: ConfigServer); + constructor(logger: ILogger, hashUtil: HashUtil, timeUtil: TimeUtil, randomUtil: RandomUtil, saveServer: SaveServer, httpServerHelper: HttpServerHelper, profileHelper: ProfileHelper, databaseService: DatabaseService, localisationService: LocalisationService, preSptModLoader: PreSptModLoader, configServer: ConfigServer); connect(): IConnectResponse; /** * Get descriptive text for each of the profile edtions a player can choose, keyed by profile.json profile type e.g. "Edge Of Darkness" * @returns Dictionary of profile types with related descriptive text */ protected getProfileDescriptions(): Record; - find(sessionIdKey: string): Info; + find(sessionId: string): Info; login(info: ILoginRequestData): string; register(info: IRegisterData): string; protected createAccount(info: IRegisterData): string; + protected generateProfileId(): string; + protected formatID(timeStamp: number, counter: number): string; changeUsername(info: IChangeRequestData): string; changePassword(info: IChangeRequestData): string; + /** + * Handle launcher requesting profile be wiped + * @param info IRegisterData + * @returns Session id + */ wipe(info: IRegisterData): string; getCompatibleTarkovVersion(): string; /** diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/LocationController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/LocationController.d.ts index eb4144a..727a8c8 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/LocationController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/LocationController.d.ts @@ -1,26 +1,26 @@ -import { ApplicationContext } from "@spt-aki/context/ApplicationContext"; -import { LocationGenerator } from "@spt-aki/generators/LocationGenerator"; -import { LootGenerator } from "@spt-aki/generators/LootGenerator"; -import { WeightedRandomHelper } from "@spt-aki/helpers/WeightedRandomHelper"; -import { ILocationBase } from "@spt-aki/models/eft/common/ILocationBase"; -import { ILocationsGenerateAllResponse } from "@spt-aki/models/eft/common/ILocationsSourceDestinationBase"; -import { IAirdropLootResult } from "@spt-aki/models/eft/location/IAirdropLootResult"; -import { IGetLocationRequestData } from "@spt-aki/models/eft/location/IGetLocationRequestData"; -import { AirdropTypeEnum } from "@spt-aki/models/enums/AirdropType"; -import { IAirdropConfig } from "@spt-aki/models/spt/config/IAirdropConfig"; -import { ILocationConfig } from "@spt-aki/models/spt/config/ILocationConfig"; -import { LootRequest } from "@spt-aki/models/spt/services/LootRequest"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { RaidTimeAdjustmentService } from "@spt-aki/services/RaidTimeAdjustmentService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationGenerator } from "@spt/generators/LocationGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { ILocationsGenerateAllResponse } from "@spt/models/eft/common/ILocationsSourceDestinationBase"; +import { IAirdropLootResult } from "@spt/models/eft/location/IAirdropLootResult"; +import { IGetLocationRequestData } from "@spt/models/eft/location/IGetLocationRequestData"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +import { IAirdropConfig } from "@spt/models/spt/config/IAirdropConfig"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { LootRequest } from "@spt/models/spt/services/LootRequest"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { ItemFilterService } from "@spt/services/ItemFilterService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class LocationController { - protected jsonUtil: JsonUtil; protected hashUtil: HashUtil; protected randomUtil: RandomUtil; protected weightedRandomHelper: WeightedRandomHelper; @@ -28,14 +28,16 @@ export declare class LocationController { protected locationGenerator: LocationGenerator; protected localisationService: LocalisationService; protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected itemFilterService: ItemFilterService; protected lootGenerator: LootGenerator; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected timeUtil: TimeUtil; protected configServer: ConfigServer; protected applicationContext: ApplicationContext; + protected cloner: ICloner; protected airdropConfig: IAirdropConfig; protected locationConfig: ILocationConfig; - constructor(jsonUtil: JsonUtil, hashUtil: HashUtil, randomUtil: RandomUtil, weightedRandomHelper: WeightedRandomHelper, logger: ILogger, locationGenerator: LocationGenerator, localisationService: LocalisationService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, databaseServer: DatabaseServer, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext); + constructor(hashUtil: HashUtil, randomUtil: RandomUtil, weightedRandomHelper: WeightedRandomHelper, logger: ILogger, locationGenerator: LocationGenerator, localisationService: LocalisationService, raidTimeAdjustmentService: RaidTimeAdjustmentService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseService: DatabaseService, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext, cloner: ICloner); /** * Handle client/location/getLocalloot * Get a location (map) with generated loot data @@ -45,7 +47,7 @@ export declare class LocationController { */ get(sessionId: string, request: IGetLocationRequestData): ILocationBase; /** - * Generate a maps base location with loot + * Generate a maps base location and loot * @param name Map name * @returns ILocationBase */ @@ -59,7 +61,7 @@ export declare class LocationController { generateAll(sessionId: string): ILocationsGenerateAllResponse; /** * Handle client/location/getAirdropLoot - * Get loot for an airdop container + * Get loot for an airdrop container * Generates it randomly based on config/airdrop.json values * @returns Array of LootItem objects */ diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/MatchController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/MatchController.d.ts index ca950b1..c08ebb0 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/MatchController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/MatchController.d.ts @@ -1,31 +1,29 @@ -import { ApplicationContext } from "@spt-aki/context/ApplicationContext"; -import { LootGenerator } from "@spt-aki/generators/LootGenerator"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { ICreateGroupRequestData } from "@spt-aki/models/eft/match/ICreateGroupRequestData"; -import { IEndOfflineRaidRequestData } from "@spt-aki/models/eft/match/IEndOfflineRaidRequestData"; -import { IGetGroupStatusRequestData } from "@spt-aki/models/eft/match/IGetGroupStatusRequestData"; -import { IGetGroupStatusResponse } from "@spt-aki/models/eft/match/IGetGroupStatusResponse"; -import { IGetProfileRequestData } from "@spt-aki/models/eft/match/IGetProfileRequestData"; -import { IGetRaidConfigurationRequestData } from "@spt-aki/models/eft/match/IGetRaidConfigurationRequestData"; -import { IJoinMatchRequestData } from "@spt-aki/models/eft/match/IJoinMatchRequestData"; -import { IJoinMatchResult } from "@spt-aki/models/eft/match/IJoinMatchResult"; -import { IInRaidConfig } from "@spt-aki/models/spt/config/IInRaidConfig"; -import { IMatchConfig } from "@spt-aki/models/spt/config/IMatchConfig"; -import { IPmcConfig } from "@spt-aki/models/spt/config/IPmcConfig"; -import { ITraderConfig } from "@spt-aki/models/spt/config/ITraderConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { BotGenerationCacheService } from "@spt-aki/services/BotGenerationCacheService"; -import { BotLootCacheService } from "@spt-aki/services/BotLootCacheService"; -import { MailSendService } from "@spt-aki/services/MailSendService"; -import { MatchLocationService } from "@spt-aki/services/MatchLocationService"; -import { ProfileSnapshotService } from "@spt-aki/services/ProfileSnapshotService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IEndOfflineRaidRequestData } from "@spt/models/eft/match/IEndOfflineRaidRequestData"; +import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; +import { IMatchGroupStartGameRequest } from "@spt/models/eft/match/IMatchGroupStartGameRequest"; +import { IMatchGroupStatusRequest } from "@spt/models/eft/match/IMatchGroupStatusRequest"; +import { IMatchGroupStatusResponse } from "@spt/models/eft/match/IMatchGroupStatusResponse"; +import { IProfileStatusResponse } from "@spt/models/eft/match/IProfileStatusResponse"; +import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; +import { IMatchConfig } from "@spt/models/spt/config/IMatchConfig"; +import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +import { ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { MailSendService } from "@spt/services/MailSendService"; +import { MatchLocationService } from "@spt/services/MatchLocationService"; +import { ProfileSnapshotService } from "@spt/services/ProfileSnapshotService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class MatchController { protected logger: ILogger; protected saveServer: SaveServer; @@ -43,21 +41,17 @@ export declare class MatchController { protected lootGenerator: LootGenerator; protected applicationContext: ApplicationContext; protected matchConfig: IMatchConfig; - protected inraidConfig: IInRaidConfig; + protected inRaidConfig: IInRaidConfig; protected traderConfig: ITraderConfig; protected pmcConfig: IPmcConfig; constructor(logger: ILogger, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, hashUtil: HashUtil, profileHelper: ProfileHelper, matchLocationService: MatchLocationService, traderHelper: TraderHelper, botLootCacheService: BotLootCacheService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, lootGenerator: LootGenerator, applicationContext: ApplicationContext); getEnabled(): boolean; - /** Handle raid/profile/list */ - getProfile(info: IGetProfileRequestData): IPmcData[]; - /** Handle client/match/group/create */ - createGroup(sessionID: string, info: ICreateGroupRequestData): any; /** Handle client/match/group/delete */ deleteGroup(info: any): void; /** Handle match/group/start_game */ - joinMatch(info: IJoinMatchRequestData, sessionId: string): IJoinMatchResult; + joinMatch(info: IMatchGroupStartGameRequest, sessionId: string): IProfileStatusResponse; /** Handle client/match/group/status */ - getGroupStatus(info: IGetGroupStatusRequestData): IGetGroupStatusResponse; + getGroupStatus(info: IMatchGroupStatusRequest): IMatchGroupStatusResponse; /** * Handle /client/raid/configuration * @param request Raid config request @@ -81,10 +75,11 @@ export declare class MatchController { protected sendCoopTakenFenceMessage(sessionId: string): void; /** * Handle when a player extracts using a coop extract - add rep to fence + * @param sessionId Session/player id * @param pmcData Profile * @param extractName Name of extract taken */ - protected handleCoopExtract(pmcData: IPmcData, extractName: string): void; + protected handleCoopExtract(sessionId: string, pmcData: IPmcData, extractName: string): void; /** * Was extract by car * @param extractName name of extract diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/NoteController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/NoteController.d.ts index ef07d6d..a46a0aa 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/NoteController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/NoteController.d.ts @@ -1,7 +1,7 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { INoteActionData } from "@spt-aki/models/eft/notes/INoteActionData"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { INoteActionData } from "@spt/models/eft/notes/INoteActionData"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; export declare class NoteController { protected eventOutputHolder: EventOutputHolder; constructor(eventOutputHolder: EventOutputHolder); diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/NotifierController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/NotifierController.d.ts index ad3d025..8939bee 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/NotifierController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/NotifierController.d.ts @@ -1,7 +1,7 @@ -import { HttpServerHelper } from "@spt-aki/helpers/HttpServerHelper"; -import { NotifierHelper } from "@spt-aki/helpers/NotifierHelper"; -import { INotifierChannel } from "@spt-aki/models/eft/notifier/INotifier"; -import { NotificationService } from "@spt-aki/services/NotificationService"; +import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { NotifierHelper } from "@spt/helpers/NotifierHelper"; +import { INotifierChannel } from "@spt/models/eft/notifier/INotifier"; +import { NotificationService } from "@spt/services/NotificationService"; export declare class NotifierController { protected notifierHelper: NotifierHelper; protected httpServerHelper: HttpServerHelper; diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/PresetBuildController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/PresetBuildController.d.ts deleted file mode 100644 index 7aa10e1..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/PresetBuildController.d.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IPresetBuildActionRequestData } from "@spt-aki/models/eft/presetBuild/IPresetBuildActionRequestData"; -import { IRemoveBuildRequestData } from "@spt-aki/models/eft/presetBuild/IRemoveBuildRequestData"; -import { IUserBuilds } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -export declare class PresetBuildController { - protected logger: ILogger; - protected hashUtil: HashUtil; - protected eventOutputHolder: EventOutputHolder; - protected jsonUtil: JsonUtil; - protected databaseServer: DatabaseServer; - protected itemHelper: ItemHelper; - protected saveServer: SaveServer; - constructor(logger: ILogger, hashUtil: HashUtil, eventOutputHolder: EventOutputHolder, jsonUtil: JsonUtil, databaseServer: DatabaseServer, itemHelper: ItemHelper, saveServer: SaveServer); - /** Handle client/handbook/builds/my/list */ - getUserBuilds(sessionID: string): IUserBuilds; - /** Handle SaveWeaponBuild event */ - saveWeaponBuild(pmcData: IPmcData, body: IPresetBuildActionRequestData, sessionId: string): IItemEventRouterResponse; - /** Handle SaveEquipmentBuild event */ - saveEquipmentBuild(pmcData: IPmcData, body: IPresetBuildActionRequestData, sessionID: string): IItemEventRouterResponse; - protected saveBuild(pmcData: IPmcData, body: IPresetBuildActionRequestData, sessionID: string, buildType: string): IItemEventRouterResponse; - /** Handle RemoveWeaponBuild event*/ - removeBuild(pmcData: IPmcData, body: IRemoveBuildRequestData, sessionID: string): IItemEventRouterResponse; - /** Handle RemoveWeaponBuild event*/ - removeWeaponBuild(pmcData: IPmcData, body: IPresetBuildActionRequestData, sessionID: string): IItemEventRouterResponse; - /** Handle RemoveEquipmentBuild event*/ - removeEquipmentBuild(pmcData: IPmcData, body: IPresetBuildActionRequestData, sessionID: string): IItemEventRouterResponse; - protected removePlayerBuild(pmcData: IPmcData, id: string, sessionID: string): IItemEventRouterResponse; -} diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/PresetController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/PresetController.d.ts index c1ae523..0317a89 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/PresetController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/PresetController.d.ts @@ -1,8 +1,10 @@ -import { PresetHelper } from "@spt-aki/helpers/PresetHelper"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseService } from "@spt/services/DatabaseService"; export declare class PresetController { + protected logger: ILogger; protected presetHelper: PresetHelper; - protected databaseServer: DatabaseServer; - constructor(presetHelper: PresetHelper, databaseServer: DatabaseServer); + protected databaseService: DatabaseService; + constructor(logger: ILogger, presetHelper: PresetHelper, databaseService: DatabaseService); initialize(): void; } diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/ProfileController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/ProfileController.d.ts index b1b7b8b..e8dae73 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/ProfileController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/ProfileController.d.ts @@ -1,37 +1,45 @@ -import { PlayerScavGenerator } from "@spt-aki/generators/PlayerScavGenerator"; -import { DialogueHelper } from "@spt-aki/helpers/DialogueHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { QuestHelper } from "@spt-aki/helpers/QuestHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IMiniProfile } from "@spt-aki/models/eft/launcher/IMiniProfile"; -import { IAkiProfile } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { IProfileChangeNicknameRequestData } from "@spt-aki/models/eft/profile/IProfileChangeNicknameRequestData"; -import { IProfileChangeVoiceRequestData } from "@spt-aki/models/eft/profile/IProfileChangeVoiceRequestData"; -import { IProfileCreateRequestData } from "@spt-aki/models/eft/profile/IProfileCreateRequestData"; -import { ISearchFriendRequestData } from "@spt-aki/models/eft/profile/ISearchFriendRequestData"; -import { ISearchFriendResponse } from "@spt-aki/models/eft/profile/ISearchFriendResponse"; -import { IValidateNicknameRequestData } from "@spt-aki/models/eft/profile/IValidateNicknameRequestData"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { MailSendService } from "@spt-aki/services/MailSendService"; -import { ProfileFixerService } from "@spt-aki/services/ProfileFixerService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { DialogueHelper } from "@spt/helpers/DialogueHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { QuestHelper } from "@spt/helpers/QuestHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IMiniProfile } from "@spt/models/eft/launcher/IMiniProfile"; +import { GetProfileStatusResponseData } from "@spt/models/eft/profile/GetProfileStatusResponseData"; +import { IGetOtherProfileRequest } from "@spt/models/eft/profile/IGetOtherProfileRequest"; +import { IGetOtherProfileResponse } from "@spt/models/eft/profile/IGetOtherProfileResponse"; +import { IGetProfileSettingsRequest } from "@spt/models/eft/profile/IGetProfileSettingsRequest"; +import { IProfileChangeNicknameRequestData } from "@spt/models/eft/profile/IProfileChangeNicknameRequestData"; +import { IProfileChangeVoiceRequestData } from "@spt/models/eft/profile/IProfileChangeVoiceRequestData"; +import { IProfileCreateRequestData } from "@spt/models/eft/profile/IProfileCreateRequestData"; +import { ISearchFriendRequestData } from "@spt/models/eft/profile/ISearchFriendRequestData"; +import { ISearchFriendResponse } from "@spt/models/eft/profile/ISearchFriendResponse"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; +import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { MailSendService } from "@spt/services/MailSendService"; +import { ProfileFixerService } from "@spt/services/ProfileFixerService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class ProfileController { protected logger: ILogger; protected hashUtil: HashUtil; + protected cloner: ICloner; protected timeUtil: TimeUtil; protected saveServer: SaveServer; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected itemHelper: ItemHelper; protected profileFixerService: ProfileFixerService; protected localisationService: LocalisationService; + protected seasonalEventService: SeasonalEventService; protected mailSendService: MailSendService; protected playerScavGenerator: PlayerScavGenerator; protected eventOutputHolder: EventOutputHolder; @@ -39,7 +47,7 @@ export declare class ProfileController { protected dialogueHelper: DialogueHelper; protected questHelper: QuestHelper; protected profileHelper: ProfileHelper; - constructor(logger: ILogger, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, databaseServer: DatabaseServer, itemHelper: ItemHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, mailSendService: MailSendService, playerScavGenerator: PlayerScavGenerator, eventOutputHolder: EventOutputHolder, traderHelper: TraderHelper, dialogueHelper: DialogueHelper, questHelper: QuestHelper, profileHelper: ProfileHelper); + constructor(logger: ILogger, hashUtil: HashUtil, cloner: ICloner, timeUtil: TimeUtil, saveServer: SaveServer, databaseService: DatabaseService, itemHelper: ItemHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, seasonalEventService: SeasonalEventService, mailSendService: MailSendService, playerScavGenerator: PlayerScavGenerator, eventOutputHolder: EventOutputHolder, traderHelper: TraderHelper, dialogueHelper: DialogueHelper, questHelper: QuestHelper, profileHelper: ProfileHelper); /** * Handle /launcher/profiles */ @@ -47,7 +55,7 @@ export declare class ProfileController { /** * Handle launcher/profile/info */ - getMiniProfile(sessionID: string): any; + getMiniProfile(sessionID: string): IMiniProfile; /** * Handle client/game/profile/list */ @@ -59,6 +67,11 @@ export declare class ProfileController { * @returns Profiles _id value */ createProfile(info: IProfileCreateRequestData, sessionID: string): string; + /** + * make profiles pmcData.Inventory.equipment unique + * @param pmcData Profile to update + */ + protected updateInventoryEquipmentId(pmcData: IPmcData): void; /** * Delete a profile * @param sessionID Id of profile to delete @@ -71,12 +84,12 @@ export declare class ProfileController { * @param sessionID Session id * @param response Event router response */ - protected givePlayerStartingQuestRewards(profileDetails: IAkiProfile, sessionID: string, response: IItemEventRouterResponse): void; + protected givePlayerStartingQuestRewards(profileDetails: ISptProfile, sessionID: string, response: IItemEventRouterResponse): void; /** * For each trader reset their state to what a level 1 player would see - * @param sessionID Session id of profile to reset + * @param sessionId Session id of profile to reset */ - protected resetAllTradersInProfile(sessionID: string): void; + protected resetAllTradersInProfile(sessionId: string): void; /** * Generate a player scav object * PMC profile MUST exist first before pscav can be generated @@ -101,4 +114,13 @@ export declare class ProfileController { * Handle client/game/profile/search */ getFriends(info: ISearchFriendRequestData, sessionID: string): ISearchFriendResponse[]; + /** + * Handle client/profile/status + */ + getProfileStatus(sessionId: string): GetProfileStatusResponseData; + getOtherProfile(sessionId: string, request: IGetOtherProfileRequest): IGetOtherProfileResponse; + /** + * Handle client/profile/settings + */ + setChosenProfileIcon(sessionId: string, request: IGetProfileSettingsRequest): boolean; } diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/QuestController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/QuestController.d.ts index 140573b..3cdce00 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/QuestController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/QuestController.d.ts @@ -1,38 +1,37 @@ -import { DialogueHelper } from "@spt-aki/helpers/DialogueHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { QuestConditionHelper } from "@spt-aki/helpers/QuestConditionHelper"; -import { QuestHelper } from "@spt-aki/helpers/QuestHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IQuestStatus } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { AvailableForConditions, IQuest, Reward } from "@spt-aki/models/eft/common/tables/IQuest"; -import { IRepeatableQuest } from "@spt-aki/models/eft/common/tables/IRepeatableQuests"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IAcceptQuestRequestData } from "@spt-aki/models/eft/quests/IAcceptQuestRequestData"; -import { ICompleteQuestRequestData } from "@spt-aki/models/eft/quests/ICompleteQuestRequestData"; -import { IHandoverQuestRequestData } from "@spt-aki/models/eft/quests/IHandoverQuestRequestData"; -import { IQuestConfig } from "@spt-aki/models/spt/config/IQuestConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocaleService } from "@spt-aki/services/LocaleService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { MailSendService } from "@spt-aki/services/MailSendService"; -import { PlayerService } from "@spt-aki/services/PlayerService"; -import { SeasonalEventService } from "@spt-aki/services/SeasonalEventService"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { DialogueHelper } from "@spt/helpers/DialogueHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { QuestConditionHelper } from "@spt/helpers/QuestConditionHelper"; +import { QuestHelper } from "@spt/helpers/QuestHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IQuestStatus } from "@spt/models/eft/common/tables/IBotBase"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IQuest, IQuestCondition } from "@spt/models/eft/common/tables/IQuest"; +import { IRepeatableQuest } from "@spt/models/eft/common/tables/IRepeatableQuests"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IAcceptQuestRequestData } from "@spt/models/eft/quests/IAcceptQuestRequestData"; +import { ICompleteQuestRequestData } from "@spt/models/eft/quests/ICompleteQuestRequestData"; +import { IFailQuestRequestData } from "@spt/models/eft/quests/IFailQuestRequestData"; +import { IHandoverQuestRequestData } from "@spt/models/eft/quests/IHandoverQuestRequestData"; +import { IQuestConfig } from "@spt/models/spt/config/IQuestConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocaleService } from "@spt/services/LocaleService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { MailSendService } from "@spt/services/MailSendService"; +import { PlayerService } from "@spt/services/PlayerService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class QuestController { protected logger: ILogger; protected timeUtil: TimeUtil; - protected jsonUtil: JsonUtil; protected httpResponseUtil: HttpResponseUtil; protected eventOutputHolder: EventOutputHolder; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected itemHelper: ItemHelper; protected dialogueHelper: DialogueHelper; protected mailSendService: MailSendService; @@ -42,11 +41,11 @@ export declare class QuestController { protected questConditionHelper: QuestConditionHelper; protected playerService: PlayerService; protected localeService: LocaleService; - protected seasonalEventService: SeasonalEventService; protected localisationService: LocalisationService; protected configServer: ConfigServer; + protected cloner: ICloner; protected questConfig: IQuestConfig; - constructor(logger: ILogger, timeUtil: TimeUtil, jsonUtil: JsonUtil, httpResponseUtil: HttpResponseUtil, eventOutputHolder: EventOutputHolder, databaseServer: DatabaseServer, itemHelper: ItemHelper, dialogueHelper: DialogueHelper, mailSendService: MailSendService, profileHelper: ProfileHelper, traderHelper: TraderHelper, questHelper: QuestHelper, questConditionHelper: QuestConditionHelper, playerService: PlayerService, localeService: LocaleService, seasonalEventService: SeasonalEventService, localisationService: LocalisationService, configServer: ConfigServer); + constructor(logger: ILogger, timeUtil: TimeUtil, httpResponseUtil: HttpResponseUtil, eventOutputHolder: EventOutputHolder, databaseService: DatabaseService, itemHelper: ItemHelper, dialogueHelper: DialogueHelper, mailSendService: MailSendService, profileHelper: ProfileHelper, traderHelper: TraderHelper, questHelper: QuestHelper, questConditionHelper: QuestConditionHelper, playerService: PlayerService, localeService: LocaleService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); /** * Handle client/quest/list * Get all quests visible to player @@ -62,18 +61,6 @@ export declare class QuestController { * @returns true if quest can be seen/accepted by player of defined level */ protected playerLevelFulfillsQuestRequirement(quest: IQuest, playerLevel: number): boolean; - /** - * Should a quest be shown to the player in trader quest screen - * @param questId Quest to check - * @returns true = show to player - */ - protected showEventQuestToPlayer(questId: string): boolean; - /** - * Is the quest for the opposite side the player is on - * @param playerSide Player side (usec/bear) - * @param questId QuestId to check - */ - protected questIsForOtherSide(playerSide: string, questId: string): boolean; /** * Handle QuestAccept event * Handle the client accepting a quest and starting it @@ -95,6 +82,7 @@ export declare class QuestController { * @returns IItemEventRouterResponse */ acceptRepeatableQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; + protected createAcceptedQuestClientResponse(sessionID: string, pmcData: IPmcData, repeatableQuestProfile: IRepeatableQuest): IItemEventRouterResponse; /** * Look for an accepted quest inside player profile, return matching * @param pmcData Profile to search through @@ -113,6 +101,12 @@ export declare class QuestController { * @returns ItemEvent client response */ completeQuest(pmcData: IPmcData, body: ICompleteQuestRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Return a list of quests that would fail when supplied quest is completed + * @param completedQuestId quest completed id + * @returns array of IQuest objects + */ + protected getQuestsFailedByCompletingQuest(completedQuestId: string, pmcProfile: IPmcData): IQuest[]; /** * Remove a quest entirely from a profile * @param sessionId Player id @@ -125,7 +119,7 @@ export declare class QuestController { * @param postQuestStatuses Quests after * @returns QuestStatusChange array */ - protected getQuestsWithDifferentStatuses(preQuestStatusus: IQuestStatus[], postQuestStatuses: IQuestStatus[]): IQuestStatus[]; + protected getQuestsWithDifferentStatuses(preQuestStatusus: IQuestStatus[], postQuestStatuses: IQuestStatus[]): IQuestStatus[] | undefined; /** * Send a popup to player on successful completion of a quest * @param sessionID session id @@ -133,7 +127,7 @@ export declare class QuestController { * @param completedQuestId Completed quest id * @param questRewards Rewards given to player */ - protected sendSuccessDialogMessageOnQuestComplete(sessionID: string, pmcData: IPmcData, completedQuestId: string, questRewards: Reward[]): void; + protected sendSuccessDialogMessageOnQuestComplete(sessionID: string, pmcData: IPmcData, completedQuestId: string, questRewards: Item[]): void; /** * 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 * @param pmcData Player profile to update @@ -141,12 +135,6 @@ export declare class QuestController { * @param completedQuestId Quest just completed */ protected addTimeLockedQuestsToProfile(pmcData: IPmcData, quests: IQuest[], completedQuestId: string): void; - /** - * Returns a list of quests that should be failed when a quest is completed - * @param completedQuestId quest completed id - * @returns array of quests - */ - protected getQuestsFailedByCompletingQuest(completedQuestId: string): IQuest[]; /** * Fail the provided quests * Update quest in profile, otherwise add fresh quest object with failed status @@ -179,7 +167,7 @@ export declare class QuestController { * @param output Response to send to user * @returns IItemEventRouterResponse */ - protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: Item, handoverRequirements: AvailableForConditions, output: IItemEventRouterResponse): IItemEventRouterResponse; + protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: Item, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * Increment a backend counter stored value by an amount, * Create counter if it does not exist @@ -188,5 +176,13 @@ export declare class QuestController { * @param questId quest id counter is associated with * @param counterValue value to increment the backend counter with */ - protected updateProfileBackendCounterValue(pmcData: IPmcData, conditionId: string, questId: string, counterValue: number): void; + protected updateProfileTaskConditionCounterValue(pmcData: IPmcData, conditionId: string, questId: string, counterValue: number): void; + /** + * Handle /client/game/profile/items/moving - QuestFail + * @param pmcData Pmc profile + * @param request Fail qeust request + * @param sessionID Session id + * @returns IItemEventRouterResponse + */ + failQuest(pmcData: IPmcData, request: IFailQuestRequestData, sessionID: string, output: IItemEventRouterResponse): IItemEventRouterResponse; } diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/RagfairController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/RagfairController.d.ts index 71cbbbc..fbd25e0 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/RagfairController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/RagfairController.d.ts @@ -1,43 +1,45 @@ -import { RagfairOfferGenerator } from "@spt-aki/generators/RagfairOfferGenerator"; -import { HandbookHelper } from "@spt-aki/helpers/HandbookHelper"; -import { InventoryHelper } from "@spt-aki/helpers/InventoryHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { RagfairHelper } from "@spt-aki/helpers/RagfairHelper"; -import { RagfairOfferHelper } from "@spt-aki/helpers/RagfairOfferHelper"; -import { RagfairSellHelper } from "@spt-aki/helpers/RagfairSellHelper"; -import { RagfairSortHelper } from "@spt-aki/helpers/RagfairSortHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITraderAssort } from "@spt-aki/models/eft/common/tables/ITrader"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IAkiProfile } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { IAddOfferRequestData, Requirement } from "@spt-aki/models/eft/ragfair/IAddOfferRequestData"; -import { IExtendOfferRequestData } from "@spt-aki/models/eft/ragfair/IExtendOfferRequestData"; -import { IGetItemPriceResult } from "@spt-aki/models/eft/ragfair/IGetItemPriceResult"; -import { IGetMarketPriceRequestData } from "@spt-aki/models/eft/ragfair/IGetMarketPriceRequestData"; -import { IGetOffersResult } from "@spt-aki/models/eft/ragfair/IGetOffersResult"; -import { IGetRagfairOfferByIdRequest } from "@spt-aki/models/eft/ragfair/IGetRagfairOfferByIdRequest"; -import { IRagfairOffer } from "@spt-aki/models/eft/ragfair/IRagfairOffer"; -import { ISearchRequestData } from "@spt-aki/models/eft/ragfair/ISearchRequestData"; -import { IProcessBuyTradeRequestData } from "@spt-aki/models/eft/trade/IProcessBuyTradeRequestData"; -import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { RagfairServer } from "@spt-aki/servers/RagfairServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { PaymentService } from "@spt-aki/services/PaymentService"; -import { RagfairOfferService } from "@spt-aki/services/RagfairOfferService"; -import { RagfairPriceService } from "@spt-aki/services/RagfairPriceService"; -import { RagfairRequiredItemsService } from "@spt-aki/services/RagfairRequiredItemsService"; -import { RagfairTaxService } from "@spt-aki/services/RagfairTaxService"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { RagfairOfferGenerator } from "@spt/generators/RagfairOfferGenerator"; +import { HandbookHelper } from "@spt/helpers/HandbookHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PaymentHelper } from "@spt/helpers/PaymentHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { RagfairHelper } from "@spt/helpers/RagfairHelper"; +import { RagfairOfferHelper } from "@spt/helpers/RagfairOfferHelper"; +import { RagfairSellHelper } from "@spt/helpers/RagfairSellHelper"; +import { RagfairSortHelper } from "@spt/helpers/RagfairSortHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITraderAssort } from "@spt/models/eft/common/tables/ITrader"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; +import { IAddOfferRequestData, Requirement } from "@spt/models/eft/ragfair/IAddOfferRequestData"; +import { IExtendOfferRequestData } from "@spt/models/eft/ragfair/IExtendOfferRequestData"; +import { IGetItemPriceResult } from "@spt/models/eft/ragfair/IGetItemPriceResult"; +import { IGetMarketPriceRequestData } from "@spt/models/eft/ragfair/IGetMarketPriceRequestData"; +import { IGetOffersResult } from "@spt/models/eft/ragfair/IGetOffersResult"; +import { IGetRagfairOfferByIdRequest } from "@spt/models/eft/ragfair/IGetRagfairOfferByIdRequest"; +import { IRagfairOffer } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { IRemoveOfferRequestData } from "@spt/models/eft/ragfair/IRemoveOfferRequestData"; +import { ISearchRequestData } from "@spt/models/eft/ragfair/ISearchRequestData"; +import { IProcessBuyTradeRequestData } from "@spt/models/eft/trade/IProcessBuyTradeRequestData"; +import { FleaOfferType } from "@spt/models/enums/FleaOfferType"; +import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { RagfairServer } from "@spt/servers/RagfairServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { PaymentService } from "@spt/services/PaymentService"; +import { RagfairOfferService } from "@spt/services/RagfairOfferService"; +import { RagfairPriceService } from "@spt/services/RagfairPriceService"; +import { RagfairRequiredItemsService } from "@spt/services/RagfairRequiredItemsService"; +import { RagfairTaxService } from "@spt/services/RagfairTaxService"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; /** * Handle RagfairCallback events */ @@ -48,7 +50,7 @@ export declare class RagfairController { protected eventOutputHolder: EventOutputHolder; protected ragfairServer: RagfairServer; protected ragfairPriceService: RagfairPriceService; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected itemHelper: ItemHelper; protected saveServer: SaveServer; protected ragfairSellHelper: RagfairSellHelper; @@ -68,10 +70,18 @@ export declare class RagfairController { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected ragfairConfig: IRagfairConfig; - constructor(logger: ILogger, timeUtil: TimeUtil, httpResponse: HttpResponseUtil, eventOutputHolder: EventOutputHolder, ragfairServer: RagfairServer, ragfairPriceService: RagfairPriceService, databaseServer: DatabaseServer, itemHelper: ItemHelper, saveServer: SaveServer, ragfairSellHelper: RagfairSellHelper, ragfairTaxService: RagfairTaxService, ragfairSortHelper: RagfairSortHelper, ragfairOfferHelper: RagfairOfferHelper, profileHelper: ProfileHelper, paymentService: PaymentService, handbookHelper: HandbookHelper, paymentHelper: PaymentHelper, inventoryHelper: InventoryHelper, traderHelper: TraderHelper, ragfairHelper: RagfairHelper, ragfairOfferService: RagfairOfferService, ragfairRequiredItemsService: RagfairRequiredItemsService, ragfairOfferGenerator: RagfairOfferGenerator, localisationService: LocalisationService, configServer: ConfigServer); + constructor(logger: ILogger, timeUtil: TimeUtil, httpResponse: HttpResponseUtil, eventOutputHolder: EventOutputHolder, ragfairServer: RagfairServer, ragfairPriceService: RagfairPriceService, databaseService: DatabaseService, itemHelper: ItemHelper, saveServer: SaveServer, ragfairSellHelper: RagfairSellHelper, ragfairTaxService: RagfairTaxService, ragfairSortHelper: RagfairSortHelper, ragfairOfferHelper: RagfairOfferHelper, profileHelper: ProfileHelper, paymentService: PaymentService, handbookHelper: HandbookHelper, paymentHelper: PaymentHelper, inventoryHelper: InventoryHelper, traderHelper: TraderHelper, ragfairHelper: RagfairHelper, ragfairOfferService: RagfairOfferService, ragfairRequiredItemsService: RagfairRequiredItemsService, ragfairOfferGenerator: RagfairOfferGenerator, localisationService: LocalisationService, configServer: ConfigServer); + /** + * Handles client/ragfair/find + * Returns flea offers that match required search parameters + * @param sessionID Player id + * @param searchRequest Search request data + * @returns IGetOffersResult + */ getOffers(sessionID: string, searchRequest: ISearchRequestData): IGetOffersResult; /** - * Handle client/ragfair/offer/findbyid + * Handle client/ragfair/offer/findbyid + * Occurs when searching for `#x` on flea * @param sessionId Player id * @param request Request data * @returns IRagfairOffer @@ -80,7 +90,7 @@ export declare class RagfairController { /** * Get offers for the client based on type of search being performed * @param searchRequest Client search request data - * @param itemsToAdd comes from ragfairHelper.filterCategories() + * @param itemsToAdd Comes from ragfairHelper.filterCategories() * @param traderAssorts Trader assorts * @param pmcProfile Player profile * @returns array of offers @@ -89,18 +99,10 @@ export declare class RagfairController { /** * Get categories for the type of search being performed, linked/required/all * @param searchRequest Client search request data - * @param offers ragfair offers to get categories for - * @returns record with tpls + counts + * @param offers Ragfair offers to get categories for + * @returns record with templates + counts */ protected getSpecificCategories(pmcProfile: IPmcData, searchRequest: ISearchRequestData, offers: IRagfairOffer[]): Record; - /** - * Add Required offers to offers result - * @param searchRequest Client search request data - * @param assorts - * @param pmcProfile Player profile - * @param result Result object being sent back to client - */ - protected addRequiredOffersToResult(searchRequest: ISearchRequestData, assorts: Record, pmcProfile: IPmcData, result: IGetOffersResult): void; /** * Add index to all offers passed in (0-indexed) * @param offers Offers to add index value to @@ -108,16 +110,26 @@ export declare class RagfairController { protected addIndexValueToOffers(offers: IRagfairOffer[]): void; /** * Update a trader flea offer with buy restrictions stored in the traders assort - * @param offer flea offer to update - * @param profile full profile of player + * @param offer Flea offer to update + * @param fullProfile Players full profile */ - protected setTraderOfferPurchaseLimits(offer: IRagfairOffer, profile: IAkiProfile): void; + protected setTraderOfferPurchaseLimits(offer: IRagfairOffer, fullProfile: ISptProfile): void; /** * Adjust ragfair offer stack count to match same value as traders assort stack count - * @param offer Flea offer to adjust + * @param offer Flea offer to adjust stack size of */ protected setTraderOfferStackSize(offer: IRagfairOffer): void; + /** + * Is the flea search being performed a 'linked' search type + * @param info Search request + * @returns True if it is a 'linked' search type + */ protected isLinkedSearch(info: ISearchRequestData): boolean; + /** + * Is the flea search being performed a 'required' search type + * @param info Search request + * @returns True if it is a 'required' search type + */ protected isRequiredSearch(info: ISearchRequestData): boolean; /** * Check all profiles and sell player offers / send player money for listing if it sold @@ -137,13 +149,52 @@ export declare class RagfairController { * @returns IItemEventRouterResponse */ addPlayerOffer(pmcData: IPmcData, offerRequest: IAddOfferRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Create a flea offer for a single item - uncludes an item with > 1 sized stack + * e.g. 1 ammo stack of 30 cartridges + * @param sessionID Session id + * @param offerRequest Offer request from client + * @param fullProfile Full profile of player + * @param output Response to send to client + * @returns IItemEventRouterResponse + */ + protected createSingleOffer(sessionID: string, offerRequest: IAddOfferRequestData, fullProfile: ISptProfile, output: IItemEventRouterResponse): IItemEventRouterResponse; + /** + * 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 purchsed individually + * @param sessionID Session id + * @param offerRequest Offer request from client + * @param fullProfile Full profile of player + * @param output Response to send to client + * @returns IItemEventRouterResponse + */ + protected createMultiOffer(sessionID: string, offerRequest: IAddOfferRequestData, fullProfile: ISptProfile, output: IItemEventRouterResponse): IItemEventRouterResponse; + /** + * 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 + * @param sessionID Session id + * @param offerRequest Offer request from client + * @param fullProfile Full profile of player + * @param output Response to send to client + * @returns IItemEventRouterResponse + */ + protected createPackOffer(sessionID: string, offerRequest: IAddOfferRequestData, fullProfile: ISptProfile, output: IItemEventRouterResponse): IItemEventRouterResponse; + /** + * Given a client request, determine what type of offer is being created + * single/multi/pack + * @param offerRequest Client request + * @returns FleaOfferType + */ + protected getOfferType(offerRequest: IAddOfferRequestData): FleaOfferType; /** * Charge player a listing fee for using flea, pulls charge from data previously sent by client * @param sessionID Player id * @param rootItem Base item being listed (used when client tax cost not found and must be done on server) * @param pmcData Player profile * @param requirementsPriceInRub Rouble cost player chose for listing (used when client tax cost not found and must be done on server) - * @param itemStackCount How many items were listed in player (used when client tax cost not found and must be done on server) + * @param itemStackCount How many items were listed by player (used when client tax cost not found and must be done on server) * @param offerRequest Add offer request object from client * @param output IItemEventRouterResponse * @returns True if charging tax to player failed @@ -163,25 +214,33 @@ export declare class RagfairController { */ protected calculateRequirementsPriceInRub(requirements: Requirement[]): number; /** - * Using item ids from flea offer request, find corrispnding items from player inventory and return as array + * Using item ids from flea offer request, find corresponding items from player inventory and return as array * @param pmcData Player profile * @param itemIdsFromFleaOfferRequest Ids from request - * @param errorMessage if item is not found, add error message to this parameter * @returns Array of items from player inventory */ - protected getItemsToListOnFleaFromInventory(pmcData: IPmcData, itemIdsFromFleaOfferRequest: string[], errorMessage: string): Item[]; - createPlayerOffer(profile: IAkiProfile, requirements: Requirement[], items: Item[], sellInOnePiece: boolean, amountToSend: number): IRagfairOffer; + protected getItemsToListOnFleaFromInventory(pmcData: IPmcData, itemIdsFromFleaOfferRequest: string[]): { + items: Item[][] | undefined; + errorMessage: string | undefined; + }; + createPlayerOffer(sessionId: string, requirements: Requirement[], items: Item[], sellInOnePiece: boolean): IRagfairOffer; getAllFleaPrices(): Record; getStaticPrices(): Record; /** * User requested removal of the offer, actually reduces the time to 71 seconds, * allowing for the possibility of extending the auction before it's end time - * @param offerId offer to 'remove' - * @param sessionID Players id + * @param removeRequest Remove offer request + * @param sessionId Players id * @returns IItemEventRouterResponse */ - removeOffer(offerId: string, sessionID: string): IItemEventRouterResponse; - extendOffer(info: IExtendOfferRequestData, sessionID: string): IItemEventRouterResponse; + removeOffer(removeRequest: IRemoveOfferRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Extend a ragfair offers listing time + * @param extendRequest Extend offer request + * @param sessionId Players id + * @returns IItemEventRouterResponse + */ + extendOffer(extendRequest: IExtendOfferRequestData, sessionId: string): IItemEventRouterResponse; /** * Create a basic trader request object with price and currency type * @param currency What currency: RUB, EURO, USD diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/RepairController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/RepairController.d.ts index 070f348..cb44bd0 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/RepairController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/RepairController.d.ts @@ -1,27 +1,29 @@ -import { QuestHelper } from "@spt-aki/helpers/QuestHelper"; -import { RepairHelper } from "@spt-aki/helpers/RepairHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IRepairActionDataRequest } from "@spt-aki/models/eft/repair/IRepairActionDataRequest"; -import { ITraderRepairActionDataRequest } from "@spt-aki/models/eft/repair/ITraderRepairActionDataRequest"; -import { IRepairConfig } from "@spt-aki/models/spt/config/IRepairConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { PaymentService } from "@spt-aki/services/PaymentService"; -import { RepairService } from "@spt-aki/services/RepairService"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { QuestHelper } from "@spt/helpers/QuestHelper"; +import { RepairHelper } from "@spt/helpers/RepairHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IRepairActionDataRequest } from "@spt/models/eft/repair/IRepairActionDataRequest"; +import { ITraderRepairActionDataRequest } from "@spt/models/eft/repair/ITraderRepairActionDataRequest"; +import { IRepairConfig } from "@spt/models/spt/config/IRepairConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { PaymentService } from "@spt/services/PaymentService"; +import { RepairService } from "@spt/services/RepairService"; export declare class RepairController { protected logger: ILogger; protected eventOutputHolder: EventOutputHolder; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected questHelper: QuestHelper; protected traderHelper: TraderHelper; protected paymentService: PaymentService; protected repairHelper: RepairHelper; protected repairService: RepairService; + protected profileHelper: ProfileHelper; protected repairConfig: IRepairConfig; - constructor(logger: ILogger, eventOutputHolder: EventOutputHolder, databaseServer: DatabaseServer, questHelper: QuestHelper, traderHelper: TraderHelper, paymentService: PaymentService, repairHelper: RepairHelper, repairService: RepairService); + constructor(logger: ILogger, eventOutputHolder: EventOutputHolder, databaseService: DatabaseService, questHelper: QuestHelper, traderHelper: TraderHelper, paymentService: PaymentService, repairHelper: RepairHelper, repairService: RepairService, profileHelper: ProfileHelper); /** * Handle TraderRepair event * Repair with trader diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/RepeatableQuestController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/RepeatableQuestController.d.ts index 7068128..74f39eb 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/RepeatableQuestController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/RepeatableQuestController.d.ts @@ -1,36 +1,37 @@ -import { RepeatableQuestGenerator } from "@spt-aki/generators/RepeatableQuestGenerator"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { QuestHelper } from "@spt-aki/helpers/QuestHelper"; -import { RagfairServerHelper } from "@spt-aki/helpers/RagfairServerHelper"; -import { RepeatableQuestHelper } from "@spt-aki/helpers/RepeatableQuestHelper"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IPmcDataRepeatableQuest, IRepeatableQuest } from "@spt-aki/models/eft/common/tables/IRepeatableQuests"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IRepeatableQuestChangeRequest } from "@spt-aki/models/eft/quests/IRepeatableQuestChangeRequest"; -import { IQuestConfig, IRepeatableQuestConfig } from "@spt-aki/models/spt/config/IQuestConfig"; -import { IQuestTypePool } from "@spt-aki/models/spt/repeatable/IQuestTypePool"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { PaymentService } from "@spt-aki/services/PaymentService"; -import { ProfileFixerService } from "@spt-aki/services/ProfileFixerService"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { ObjectId } from "@spt-aki/utils/ObjectId"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { RepeatableQuestGenerator } from "@spt/generators/RepeatableQuestGenerator"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { QuestHelper } from "@spt/helpers/QuestHelper"; +import { RepeatableQuestHelper } from "@spt/helpers/RepeatableQuestHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IPmcDataRepeatableQuest, IRepeatableQuest } from "@spt/models/eft/common/tables/IRepeatableQuests"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; +import { IRepeatableQuestChangeRequest } from "@spt/models/eft/quests/IRepeatableQuestChangeRequest"; +import { ELocationName } from "@spt/models/enums/ELocationName"; +import { IQuestConfig, IRepeatableQuestConfig } from "@spt/models/spt/config/IQuestConfig"; +import { IGetRepeatableByIdResult } from "@spt/models/spt/quests/IGetRepeatableByIdResult"; +import { IQuestTypePool } from "@spt/models/spt/repeatable/IQuestTypePool"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { PaymentService } from "@spt/services/PaymentService"; +import { ProfileFixerService } from "@spt/services/ProfileFixerService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; +import { ObjectId } from "@spt/utils/ObjectId"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class RepeatableQuestController { protected logger: ILogger; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected timeUtil: TimeUtil; protected randomUtil: RandomUtil; protected httpResponse: HttpResponseUtil; - protected jsonUtil: JsonUtil; protected profileHelper: ProfileHelper; protected profileFixerService: ProfileFixerService; - protected ragfairServerHelper: RagfairServerHelper; + protected localisationService: LocalisationService; protected eventOutputHolder: EventOutputHolder; protected paymentService: PaymentService; protected objectId: ObjectId; @@ -38,8 +39,9 @@ export declare class RepeatableQuestController { protected repeatableQuestHelper: RepeatableQuestHelper; protected questHelper: QuestHelper; protected configServer: ConfigServer; + protected cloner: ICloner; protected questConfig: IQuestConfig; - constructor(logger: ILogger, databaseServer: DatabaseServer, timeUtil: TimeUtil, randomUtil: RandomUtil, httpResponse: HttpResponseUtil, jsonUtil: JsonUtil, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, ragfairServerHelper: RagfairServerHelper, eventOutputHolder: EventOutputHolder, paymentService: PaymentService, objectId: ObjectId, repeatableQuestGenerator: RepeatableQuestGenerator, repeatableQuestHelper: RepeatableQuestHelper, questHelper: QuestHelper, configServer: ConfigServer); + constructor(logger: ILogger, databaseService: DatabaseService, timeUtil: TimeUtil, randomUtil: RandomUtil, httpResponse: HttpResponseUtil, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, eventOutputHolder: EventOutputHolder, paymentService: PaymentService, objectId: ObjectId, repeatableQuestGenerator: RepeatableQuestGenerator, repeatableQuestHelper: RepeatableQuestHelper, questHelper: QuestHelper, configServer: ConfigServer, cloner: ICloner); /** * Handle client/repeatalbeQuests/activityPeriods * Returns an array of objects in the format of repeatable quests to the client. @@ -61,12 +63,37 @@ export declare class RepeatableQuestController { * (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 * - * @param {string} _info Request from client - * @param {string} sessionID Player's session id + * @param {string} sessionID Player's session id * - * @returns {array} array of "repeatableQuestObjects" as descibed above + * @returns {array} Array of "repeatableQuestObjects" as described above */ - getClientRepeatableQuests(_info: IEmptyRequestData, sessionID: string): IPmcDataRepeatableQuest[]; + getClientRepeatableQuests(sessionID: string): IPmcDataRepeatableQuest[]; + /** + * Expire quests and replace expired quests with ready-to-hand-in quests inside generatedRepeatables.activeQuests + * @param generatedRepeatables Repeatables to process (daily/weekly) + * @param pmcData Player profile + */ + protected processExpiredQuests(generatedRepeatables: IPmcDataRepeatableQuest, pmcData: IPmcData): void; + /** + * Check if a repeatable quest type (daily/weekly) is active for the given profile + * @param repeatableConfig Repeatable quest config + * @param pmcData Player profile + * @returns True if profile is allowed to access dailies + */ + protected canProfileAccessRepeatableQuests(repeatableConfig: IRepeatableQuestConfig, pmcData: IPmcData): boolean; + /** + * Does player have daily scav quests unlocked + * @param pmcData Player profile to check + * @returns True if unlocked + */ + protected playerHasDailyScavQuestsUnlocked(pmcData: IPmcData): boolean; + /** + * Does player have daily pmc quests unlocked + * @param pmcData Player profile to check + * @param repeatableConfig Config of daily type to check + * @returns True if unlocked + */ + protected playerHasDailyPmcQuestsUnlocked(pmcData: IPmcData, repeatableConfig: IRepeatableQuestConfig): boolean; /** * Get the number of quests to generate - takes into account charisma state of player * @param repeatableConfig Config @@ -95,10 +122,46 @@ export declare class RepeatableQuestController { */ protected generateQuestPool(repeatableConfig: IRepeatableQuestConfig, pmcLevel: number): IQuestTypePool; protected createBaseQuestPool(repeatableConfig: IRepeatableQuestConfig): IQuestTypePool; + /** + * Return the locations this PMC is allowed to get daily quests for based on their level + * @param locations The original list of locations + * @param pmcLevel The players level + * @returns A filtered list of locations that allow the player PMC level to access it + */ + protected getAllowedLocationsForPmcLevel(locations: Record, pmcLevel: number): Partial>; + /** + * Return true if the given pmcLevel is allowed on the given location + * @param location The location name to check + * @param pmcLevel The level of the pmc + * @returns True if the given pmc level is allowed to access the given location + */ + protected isPmcLevelAllowedOnLocation(location: string, pmcLevel: number): boolean; debugLogRepeatableQuestIds(pmcData: IPmcData): void; /** * Handle RepeatableQuestChange event + * + * Replace a players repeatable quest + * @param pmcData Player profile + * @param changeRequest Request object + * @param sessionID Session id + * @returns IItemEventRouterResponse */ changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse; + /** + * Find a repeatable (daily/weekly/scav) from a players profile by its id + * @param questId Id of quest to find + * @param pmcData Profile that contains quests to look through + * @returns IGetRepeatableByIdResult + */ + protected getRepeatableById(questId: string, pmcData: IPmcData): IGetRepeatableByIdResult; protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; + /** + * Some accounts have access to free repeatable quest refreshes + * Track the usage of them inside players profile + * @param fullProfile Player profile + * @param repeatableSubType Can be daily / weekly / scav repeatable + * @param repeatableTypeName Subtype of repeatable quest: daily / weekly / scav + * @returns Is the repeatable being replaced for free + */ + protected useFreeRefreshIfAvailable(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): boolean; } diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/TradeController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/TradeController.d.ts index 3824e2b..bc72e92 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/TradeController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/TradeController.d.ts @@ -1,57 +1,89 @@ -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { TradeHelper } from "@spt-aki/helpers/TradeHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Item, Upd } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITraderBase } from "@spt-aki/models/eft/common/tables/ITrader"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IProcessBaseTradeRequestData } from "@spt-aki/models/eft/trade/IProcessBaseTradeRequestData"; -import { IProcessRagfairTradeRequestData } from "@spt-aki/models/eft/trade/IProcessRagfairTradeRequestData"; -import { ISellScavItemsToFenceRequestData } from "@spt-aki/models/eft/trade/ISellScavItemsToFenceRequestData"; -import { Traders } from "@spt-aki/models/enums/Traders"; -import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig"; -import { ITraderConfig } from "@spt-aki/models/spt/config/ITraderConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { RagfairServer } from "@spt-aki/servers/RagfairServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { RagfairPriceService } from "@spt-aki/services/RagfairPriceService"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TradeHelper } from "@spt/helpers/TradeHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITraderBase } from "@spt/models/eft/common/tables/ITrader"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IRagfairOffer } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { IProcessBaseTradeRequestData } from "@spt/models/eft/trade/IProcessBaseTradeRequestData"; +import { IOfferRequest, IProcessRagfairTradeRequestData } from "@spt/models/eft/trade/IProcessRagfairTradeRequestData"; +import { ISellScavItemsToFenceRequestData } from "@spt/models/eft/trade/ISellScavItemsToFenceRequestData"; +import { Traders } from "@spt/models/enums/Traders"; +import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig"; +import { ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { RagfairServer } from "@spt/servers/RagfairServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { MailSendService } from "@spt/services/MailSendService"; +import { RagfairPriceService } from "@spt/services/RagfairPriceService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class TradeController { protected logger: ILogger; + protected databaseService: DatabaseService; protected eventOutputHolder: EventOutputHolder; protected tradeHelper: TradeHelper; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected hashUtil: HashUtil; protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; protected traderHelper: TraderHelper; - protected jsonUtil: JsonUtil; protected ragfairServer: RagfairServer; protected httpResponse: HttpResponseUtil; protected localisationService: LocalisationService; protected ragfairPriceService: RagfairPriceService; + protected mailSendService: MailSendService; protected configServer: ConfigServer; protected ragfairConfig: IRagfairConfig; protected traderConfig: ITraderConfig; - constructor(logger: ILogger, eventOutputHolder: EventOutputHolder, tradeHelper: TradeHelper, itemHelper: ItemHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, jsonUtil: JsonUtil, ragfairServer: RagfairServer, httpResponse: HttpResponseUtil, localisationService: LocalisationService, ragfairPriceService: RagfairPriceService, configServer: ConfigServer); + constructor(logger: ILogger, databaseService: DatabaseService, eventOutputHolder: EventOutputHolder, tradeHelper: TradeHelper, timeUtil: TimeUtil, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, ragfairServer: RagfairServer, httpResponse: HttpResponseUtil, localisationService: LocalisationService, ragfairPriceService: RagfairPriceService, mailSendService: MailSendService, configServer: ConfigServer); /** Handle TradingConfirm event */ confirmTrading(pmcData: IPmcData, request: IProcessBaseTradeRequestData, sessionID: string): IItemEventRouterResponse; /** Handle RagFairBuyOffer event */ - confirmRagfairTrading(pmcData: IPmcData, body: IProcessRagfairTradeRequestData, sessionID: string): IItemEventRouterResponse; + confirmRagfairTrading(pmcData: IPmcData, request: IProcessRagfairTradeRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Buy an item off the flea sold by a trader + * @param sessionId Session id + * @param pmcData Player profile + * @param fleaOffer Offer being purchased + * @param requestOffer request data from client + * @param output Output to send back to client + */ + protected buyTraderItemFromRagfair(sessionId: string, pmcData: IPmcData, fleaOffer: IRagfairOffer, requestOffer: IOfferRequest, output: IItemEventRouterResponse): void; + /** + * Buy an item off the flea sold by a PMC + * @param sessionId Session id + * @param pmcData Player profile + * @param fleaOffer Offer being purchased + * @param requestOffer Request data from client + * @param output Output to send back to client + */ + protected buyPmcItemFromRagfair(sessionId: string, pmcData: IPmcData, fleaOffer: IRagfairOffer, requestOffer: IOfferRequest, output: IItemEventRouterResponse): void; + /** + * Does Player have necessary trader loyalty to purchase flea offer + * @param sellerIsTrader is seller trader + * @param fleaOffer FLea offer being bought + * @param pmcData Player profile + * @returns True if player can buy offer + */ + protected playerLacksTraderLoyaltyLevelToBuyOffer(fleaOffer: IRagfairOffer, pmcData: IPmcData): boolean; /** Handle SellAllFromSavage event */ sellScavItemsToFence(pmcData: IPmcData, request: ISellScavItemsToFenceRequestData, sessionId: string): IItemEventRouterResponse; /** - * Sell all sellable items to a trader from inventory - * WILL DELETE ITEMS FROM INVENTORY + CHILDREN OF ITEMS SOLD + * Send the specified rouble total to player as mail * @param sessionId Session id - * @param profileWithItemsToSell Profile with items to be sold to trader - * @param profileThatGetsMoney Profile that gets the money after selling items * @param trader Trader to sell items to - * @returns IItemEventRouterResponse + * @param output IItemEventRouterResponse */ - protected sellInventoryToTrader(sessionId: string, profileWithItemsToSell: IPmcData, profileThatGetsMoney: IPmcData, trader: Traders): IItemEventRouterResponse; + protected mailMoneyToPlayer(sessionId: string, roublesToSend: number, trader: Traders): void; /** * Looks up an items children and gets total handbook price for them * @param parentItemId parent item that has children we want to sum price of @@ -61,5 +93,4 @@ export declare class TradeController { * @returns Rouble price */ protected getPriceOfItemAndChildren(parentItemId: string, items: Item[], handbookPrices: Record, traderDetails: ITraderBase): number; - protected confirmTradingInternal(pmcData: IPmcData, body: IProcessBaseTradeRequestData, sessionID: string, foundInRaid?: boolean, upd?: Upd): IItemEventRouterResponse; } diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/TraderController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/TraderController.d.ts index d85977f..7fc6d78 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/TraderController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/TraderController.d.ts @@ -1,17 +1,21 @@ -import { FenceBaseAssortGenerator } from "@spt-aki/generators/FenceBaseAssortGenerator"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { TraderAssortHelper } from "@spt-aki/helpers/TraderAssortHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { ITraderAssort, ITraderBase } from "@spt-aki/models/eft/common/tables/ITrader"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { FenceService } from "@spt-aki/services/FenceService"; -import { TraderAssortService } from "@spt-aki/services/TraderAssortService"; -import { TraderPurchasePersisterService } from "@spt-aki/services/TraderPurchasePersisterService"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; +import { FenceBaseAssortGenerator } from "@spt/generators/FenceBaseAssortGenerator"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderAssortHelper } from "@spt/helpers/TraderAssortHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { ITraderAssort, ITraderBase } from "@spt/models/eft/common/tables/ITrader"; +import { ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { FenceService } from "@spt/services/FenceService"; +import { TraderAssortService } from "@spt/services/TraderAssortService"; +import { TraderPurchasePersisterService } from "@spt/services/TraderPurchasePersisterService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class TraderController { protected logger: ILogger; - protected databaseServer: DatabaseServer; + protected timeUtil: TimeUtil; + protected databaseService: DatabaseService; protected traderAssortHelper: TraderAssortHelper; protected profileHelper: ProfileHelper; protected traderHelper: TraderHelper; @@ -19,11 +23,13 @@ export declare class TraderController { protected traderPurchasePersisterService: TraderPurchasePersisterService; protected fenceService: FenceService; protected fenceBaseAssortGenerator: FenceBaseAssortGenerator; - protected jsonUtil: JsonUtil; - constructor(logger: ILogger, databaseServer: DatabaseServer, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, traderAssortService: TraderAssortService, traderPurchasePersisterService: TraderPurchasePersisterService, fenceService: FenceService, fenceBaseAssortGenerator: FenceBaseAssortGenerator, jsonUtil: JsonUtil); + protected configServer: ConfigServer; + protected cloner: ICloner; + protected traderConfig: ITraderConfig; + constructor(logger: ILogger, timeUtil: TimeUtil, databaseService: DatabaseService, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, traderAssortService: TraderAssortService, traderPurchasePersisterService: TraderPurchasePersisterService, fenceService: FenceService, fenceBaseAssortGenerator: FenceBaseAssortGenerator, configServer: ConfigServer, cloner: ICloner); /** * Runs when onLoad event is fired - * Iterate over traders, ensure an unmolested copy of their assorts is stored in traderAssortService + * 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 */ load(): void; diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/WeatherController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/WeatherController.d.ts index e25dc16..7d24954 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/WeatherController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/WeatherController.d.ts @@ -1,8 +1,8 @@ -import { WeatherGenerator } from "@spt-aki/generators/WeatherGenerator"; -import { IWeatherData } from "@spt-aki/models/eft/weather/IWeatherData"; -import { IWeatherConfig } from "@spt-aki/models/spt/config/IWeatherConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; +import { WeatherGenerator } from "@spt/generators/WeatherGenerator"; +import { IWeatherData } from "@spt/models/eft/weather/IWeatherData"; +import { IWeatherConfig } from "@spt/models/spt/config/IWeatherConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; export declare class WeatherController { protected weatherGenerator: WeatherGenerator; protected logger: ILogger; diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/WishlistController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/WishlistController.d.ts index 01c4465..ee4d970 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/WishlistController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/WishlistController.d.ts @@ -1,7 +1,7 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IWishlistActionData } from "@spt-aki/models/eft/wishlist/IWishlistActionData"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IWishlistActionData } from "@spt/models/eft/wishlist/IWishlistActionData"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; export declare class WishlistController { protected eventOutputHolder: EventOutputHolder; constructor(eventOutputHolder: EventOutputHolder); diff --git a/TypeScript/23CustomAbstractChatBot/types/di/Container.d.ts b/TypeScript/23CustomAbstractChatBot/types/di/Container.d.ts index e339a3b..0619968 100644 --- a/TypeScript/23CustomAbstractChatBot/types/di/Container.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/di/Container.d.ts @@ -5,6 +5,7 @@ import { DependencyContainer } from "tsyringe"; export declare class Container { static registerPostLoadTypes(container: DependencyContainer, childContainer: DependencyContainer): void; static registerTypes(depContainer: DependencyContainer): void; + static registerPrimaryDependencies(depContainer: DependencyContainer): void; static registerListTypes(depContainer: DependencyContainer): void; private static registerUtils; private static registerRouters; diff --git a/TypeScript/23CustomAbstractChatBot/types/di/Router.d.ts b/TypeScript/23CustomAbstractChatBot/types/di/Router.d.ts index b77dece..01ca547 100644 --- a/TypeScript/23CustomAbstractChatBot/types/di/Router.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/di/Router.d.ts @@ -1,6 +1,6 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IAkiProfile } from "@spt-aki/models/eft/profile/IAkiProfile"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; export declare class Router { protected handledRoutes: HandledRoute[]; getTopLevelRoute(): string; @@ -11,20 +11,20 @@ export declare class Router { export declare class StaticRouter extends Router { private routes; constructor(routes: RouteAction[]); - handleStatic(url: string, info: any, sessionID: string, output: string): any; + handleStatic(url: string, info: any, sessionID: string, output: string): Promise; getHandledRoutes(): HandledRoute[]; } export declare class DynamicRouter extends Router { private routes; constructor(routes: RouteAction[]); - handleDynamic(url: string, info: any, sessionID: string, output: string): any; + handleDynamic(url: string, info: any, sessionID: string, output: string): Promise; getHandledRoutes(): HandledRoute[]; } export declare class ItemEventRouterDefinition extends Router { - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): IItemEventRouterResponse; + handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string, output: IItemEventRouterResponse): Promise; } export declare class SaveLoadRouter extends Router { - handleLoad(profile: IAkiProfile): IAkiProfile; + handleLoad(profile: ISptProfile): ISptProfile; } export declare class HandledRoute { route: string; @@ -33,6 +33,6 @@ export declare class HandledRoute { } export declare class RouteAction { url: string; - action: (url: string, info: any, sessionID: string, output: string) => any; - constructor(url: string, action: (url: string, info: any, sessionID: string, output: string) => any); + action: (url: string, info: any, sessionID: string, output: string) => Promise; + constructor(url: string, action: (url: string, info: any, sessionID: string, output: string) => Promise); } diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/BotEquipmentModGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/BotEquipmentModGenerator.d.ts index 2e73798..419120f 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/BotEquipmentModGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/BotEquipmentModGenerator.d.ts @@ -1,31 +1,39 @@ -import { BotGeneratorHelper } from "@spt-aki/helpers/BotGeneratorHelper"; -import { BotHelper } from "@spt-aki/helpers/BotHelper"; -import { BotWeaponGeneratorHelper } from "@spt-aki/helpers/BotWeaponGeneratorHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { ProbabilityHelper } from "@spt-aki/helpers/ProbabilityHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { Mods, ModsChances } from "@spt-aki/models/eft/common/tables/IBotType"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITemplateItem, Slot } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { EquipmentFilterDetails, IBotConfig } from "@spt-aki/models/spt/config/IBotConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { BotEquipmentFilterService } from "@spt-aki/services/BotEquipmentFilterService"; -import { BotEquipmentModPoolService } from "@spt-aki/services/BotEquipmentModPoolService"; -import { BotModLimits, BotWeaponModLimitService } from "@spt-aki/services/BotWeaponModLimitService"; -import { ItemFilterService } from "@spt-aki/services/ItemFilterService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { BotGeneratorHelper } from "@spt/helpers/BotGeneratorHelper"; +import { BotHelper } from "@spt/helpers/BotHelper"; +import { BotWeaponGeneratorHelper } from "@spt/helpers/BotWeaponGeneratorHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProbabilityHelper } from "@spt/helpers/ProbabilityHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IPreset } from "@spt/models/eft/common/IGlobals"; +import { Mods, ModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem, Slot } from "@spt/models/eft/common/tables/ITemplateItem"; +import { ModSpawn } from "@spt/models/enums/ModSpawn"; +import { IChooseRandomCompatibleModResult } from "@spt/models/spt/bots/IChooseRandomCompatibleModResult"; +import { IFilterPlateModsForSlotByLevelResult } from "@spt/models/spt/bots/IFilterPlateModsForSlotByLevelResult"; +import { IGenerateEquipmentProperties } from "@spt/models/spt/bots/IGenerateEquipmentProperties"; +import { IGenerateWeaponRequest } from "@spt/models/spt/bots/IGenerateWeaponRequest"; +import { IModToSpawnRequest } from "@spt/models/spt/bots/IModToSpawnRequest"; +import { EquipmentFilterDetails, EquipmentFilters, IBotConfig } from "@spt/models/spt/config/IBotConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService"; +import { BotEquipmentModPoolService } from "@spt/services/BotEquipmentModPoolService"; +import { BotWeaponModLimitService } from "@spt/services/BotWeaponModLimitService"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { ItemFilterService } from "@spt/services/ItemFilterService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class BotEquipmentModGenerator { protected logger: ILogger; - protected jsonUtil: JsonUtil; protected hashUtil: HashUtil; protected randomUtil: RandomUtil; protected probabilityHelper: ProbabilityHelper; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected itemHelper: ItemHelper; protected botEquipmentFilterService: BotEquipmentFilterService; protected itemFilterService: ItemFilterService; @@ -34,39 +42,40 @@ export declare class BotEquipmentModGenerator { protected botHelper: BotHelper; protected botGeneratorHelper: BotGeneratorHelper; protected botWeaponGeneratorHelper: BotWeaponGeneratorHelper; + protected weightedRandomHelper: WeightedRandomHelper; + protected presetHelper: PresetHelper; protected localisationService: LocalisationService; protected botEquipmentModPoolService: BotEquipmentModPoolService; protected configServer: ConfigServer; + protected cloner: ICloner; protected botConfig: IBotConfig; - constructor(logger: ILogger, jsonUtil: JsonUtil, hashUtil: HashUtil, randomUtil: RandomUtil, probabilityHelper: ProbabilityHelper, databaseServer: DatabaseServer, itemHelper: ItemHelper, botEquipmentFilterService: BotEquipmentFilterService, itemFilterService: ItemFilterService, profileHelper: ProfileHelper, botWeaponModLimitService: BotWeaponModLimitService, botHelper: BotHelper, botGeneratorHelper: BotGeneratorHelper, botWeaponGeneratorHelper: BotWeaponGeneratorHelper, localisationService: LocalisationService, botEquipmentModPoolService: BotEquipmentModPoolService, configServer: ConfigServer); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, probabilityHelper: ProbabilityHelper, databaseService: DatabaseService, itemHelper: ItemHelper, botEquipmentFilterService: BotEquipmentFilterService, itemFilterService: ItemFilterService, profileHelper: ProfileHelper, botWeaponModLimitService: BotWeaponModLimitService, botHelper: BotHelper, botGeneratorHelper: BotGeneratorHelper, botWeaponGeneratorHelper: BotWeaponGeneratorHelper, weightedRandomHelper: WeightedRandomHelper, presetHelper: PresetHelper, localisationService: LocalisationService, botEquipmentModPoolService: BotEquipmentModPoolService, configServer: ConfigServer, cloner: ICloner); /** * Check mods are compatible and add to array * @param equipment Equipment item to add mods to * @param modPool Mod list to choose frm * @param parentId parentid of item to add mod to * @param parentTemplate template objet of item to add mods to - * @param modSpawnChances dictionary of mod items and their chance to spawn for this bot type - * @param botRole the bot role being generated for * @param forceSpawn should this mod be forced to spawn * @returns Item + compatible mods as an array */ - generateModsForEquipment(equipment: Item[], modPool: Mods, parentId: string, parentTemplate: ITemplateItem, modSpawnChances: ModsChances, botRole: string, forceSpawn?: boolean): Item[]; + generateModsForEquipment(equipment: Item[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): Item[]; + /** + * Filter a bots plate pool based on its current level + * @param settings Bot equipment generation settings + * @param modSlot Armor slot being filtered + * @param existingPlateTplPool Plates tpls to choose from + * @param armorItem + * @returns Array of plate tpls to choose from + */ + protected filterPlateModsForSlotByLevel(settings: IGenerateEquipmentProperties, modSlot: string, existingPlateTplPool: string[], armorItem: ITemplateItem): IFilterPlateModsForSlotByLevelResult; /** * Add mods to a weapon using the provided mod pool - * @param sessionId session id - * @param weapon Weapon to add mods to - * @param modPool Pool of compatible mods to attach to weapon - * @param weaponParentId parentId of weapon - * @param parentTemplate Weapon which mods will be generated on - * @param modSpawnChances Mod spawn chances - * @param ammoTpl Ammo tpl to use when generating magazines/cartridges - * @param botRole Role of bot weapon is generated for - * @param botLevel lvel of the bot weapon is being generated for - * @param modLimits limits placed on certian mod types per gun - * @param botEquipmentRole role of bot when accessing bot.json equipment config settings + * @param sessionId Session id + * @param request Data used to generate the weapon * @returns Weapon + mods array */ - generateModsForWeapon(sessionId: string, weapon: Item[], modPool: Mods, weaponParentId: string, parentTemplate: ITemplateItem, modSpawnChances: ModsChances, ammoTpl: string, botRole: string, botLevel: number, modLimits: BotModLimits, botEquipmentRole: string): Item[]; + generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): Item[]; /** * Is this modslot a front or rear sight * @param modSlot Slot to check @@ -85,50 +94,88 @@ export declare class BotEquipmentModGenerator { * @param modSpawnChances Chance dictionary to update */ protected adjustSlotSpawnChances(modSpawnChances: ModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; - protected modSlotCanHoldMuzzleDevices(modSlot: string, modsParentId: string): boolean; - protected sortModKeys(unsortedKeys: string[]): string[]; + /** + * Does the provided modSlot allow muzzle-related items + * @param modSlot Slot id to check + * @param modsParentId OPTIONAL: parent id of modslot being checked + * @returns True if modSlot can have muzzle-related items + */ + protected modSlotCanHoldMuzzleDevices(modSlot: string, modsParentId?: string): boolean; + /** + * Sort mod slots into an ordering that maximises chance of a successful weapon generation + * @param unsortedSlotKeys Array of mod slot strings to sort + * @returns Sorted array + */ + protected sortModKeys(unsortedSlotKeys: string[]): string[]; /** * Get a Slot property for an item (chamber/cartridge/slot) * @param modSlot e.g patron_in_weapon * @param parentTemplate item template * @returns Slot item */ - protected getModItemSlot(modSlot: string, parentTemplate: ITemplateItem): Slot; + protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): Slot; /** * Randomly choose if a mod should be spawned, 100% for required mods OR mod is ammo slot - * never return true for an item that has 0% spawn chance * @param itemSlot slot the item sits in * @param modSlot slot the mod sits in * @param modSpawnChances Chances for various mod spawns - * @returns boolean true if it should spawn + * @param botEquipConfig Various config settings for generating this type of bot + * @returns ModSpawn.SPAWN when mod should be spawned, ModSpawn.DEFAULT_MOD when default mod should spawn, ModSpawn.SKIP when mod is skipped */ - protected shouldModBeSpawned(itemSlot: Slot, modSlot: string, modSpawnChances: ModsChances): boolean; + protected shouldModBeSpawned(itemSlot: Slot, modSlot: string, modSpawnChances: ModsChances, botEquipConfig: EquipmentFilters): ModSpawn; /** - * @param modSlot Slot mod will fit into - * @param isRandomisableSlot Will generate a randomised mod pool if true - * @param modsParent Parent slot the item will be a part of - * @param botEquipBlacklist Blacklist to prevent mods from being picked - * @param itemModPool Pool of items to pick from - * @param weapon array with only weapon tpl in it, ready for mods to be added - * @param ammoTpl ammo tpl to use if slot requires a cartridge to be added (e.g. mod_magazine) - * @param parentTemplate Parent item the mod will go into - * @returns ITemplateItem + * Choose a mod to fit into the desired slot + * @param request Data used to choose an appropriate mod with + * @returns itemHelper.getItem() result */ - protected chooseModToPutIntoSlot(modSlot: string, isRandomisableSlot: boolean, botWeaponSightWhitelist: Record, botEquipBlacklist: EquipmentFilterDetails, itemModPool: Record, weapon: Item[], ammoTpl: string, parentTemplate: ITemplateItem): [boolean, ITemplateItem]; + protected chooseModToPutIntoSlot(request: IModToSpawnRequest): [boolean, ITemplateItem] | undefined; + /** + * + * @param modPool Pool of mods that can be picked from + * @param parentSlot Slot the picked mod will have as a parent + * @param choiceTypeEnum How should chosen tpl be treated: DEFAULT_MOD/SPAWN/SKIP + * @param weapon Array of weapon items chosen item will be added to + * @param modSlotName Name of slot picked mod will be placed into + * @returns Chosen weapon details + */ + protected pickWeaponModTplForSlotFromPool(modPool: string[], parentSlot: Slot, choiceTypeEnum: ModSpawn, weapon: Item[], modSlotName: string): IChooseRandomCompatibleModResult; + /** + * Filter mod pool down based on various criteria: + * Is slot flagged as randomisable + * Is slot required + * Is slot flagged as default mod only + * @param itemModPool Existing pool of mods to choose + * @param itemSpawnCategory How should slot be handled + * @param parentTemplate Mods parent + * @param weaponTemplate Mods root parent (weapon/equipment) + * @param modSlot name of mod slot to choose for + * @param botEquipBlacklist A blacklist of items not allowed to be picked + * @param isRandomisableSlot Slot is flagged as a randomisable slot + * @returns Array of mod tpls + */ + protected getModPoolForSlot(itemModPool: Record, itemSpawnCategory: ModSpawn, parentTemplate: ITemplateItem, weaponTemplate: ITemplateItem, modSlot: string, botEquipBlacklist: EquipmentFilterDetails, isRandomisableSlot: boolean): string[]; + /** + * Get default preset for weapon OR get specific weapon presets for edge cases (mp5/silenced dvl) + * @param weaponTemplate Weapons db template + * @param parentItemTpl Tpl of the parent item + * @returns Default preset found + */ + protected getMatchingPreset(weaponTemplate: ITemplateItem, parentItemTpl: string): IPreset | undefined; /** * Temp fix to prevent certain combinations of weapons with mods that are known to be incompatible - * @param weapon Weapon + * @param weapon Array of items that make up a weapon * @param modTpl Mod to check compatibility with weapon * @returns True if incompatible */ protected weaponModComboIsIncompatible(weapon: Item[], modTpl: string): boolean; /** - * Create a mod item with parameters as properties + * Create a mod item with provided parameters as properties + add upd property * @param modId _id * @param modTpl _tpl * @param parentId parentId * @param modSlot slotId - * @param modTemplate Used to add additional properites in the upd object + * @param modTemplate Used to add additional properties in the upd object + * @param botRole The bots role mod is being created for * @returns Item object */ protected createModItem(modId: string, modTpl: string, parentId: string, modSlot: string, modTemplate: ITemplateItem, botRole: string): Item; @@ -140,42 +187,44 @@ export declare class BotEquipmentModGenerator { protected getAmmoContainers(): string[]; /** * Get a random mod from an items compatible mods Filter array - * @param modTpl ???? default value to return if nothing found - * @param parentSlot item mod will go into, used to get combatible items + * @param fallbackModTpl Default value to return if parentSlot Filter is empty + * @param parentSlot Item mod will go into, used to get compatible items * @param modSlot Slot to get mod to fill - * @param items items to ensure picked mod is compatible with - * @returns item tpl + * @param items Items to ensure picked mod is compatible with + * @returns Item tpl */ - protected getModTplFromItemDb(modTpl: string, parentSlot: Slot, modSlot: string, items: Item[]): string; + protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: Slot, modSlot: string, items: Item[]): string | undefined; /** - * Log errors if mod is not compatible with slot - * @param modToAdd template of mod to check - * @param itemSlot slot the item will be placed in - * @param modSlot slot the mod will fill - * @param parentTemplate template of the mods parent item - * @returns true if valid + * Check if mod exists in db + is for a required slot + * @param modToAdd Db template of mod to check + * @param slotAddedToTemplate Slot object the item will be placed as child into + * @param modSlot Slot the mod will fill + * @param parentTemplate Db template of the mods being added + * @param botRole Bots wildspawntype (assault/pmcBot/exUsec etc) + * @returns True if valid for slot */ - protected isModValidForSlot(modToAdd: [boolean, ITemplateItem], itemSlot: Slot, modSlot: string, parentTemplate: ITemplateItem): boolean; + protected isModValidForSlot(modToAdd: [boolean, ITemplateItem], slotAddedToTemplate: Slot, modSlot: string, parentTemplate: ITemplateItem, botRole: string): boolean; /** * Find mod tpls of a provided type and add to modPool - * @param desiredSlotName slot to look up and add we are adding tpls for (e.g mod_scope) + * @param desiredSlotName Slot to look up and add we are adding tpls for (e.g mod_scope) * @param modTemplate db object for modItem we get compatible mods from * @param modPool Pool of mods we are adding to + * @param botEquipBlacklist A blacklist of items that cannot be picked */ protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: Mods, botEquipBlacklist: EquipmentFilterDetails): void; /** * Get the possible items that fit a slot * @param parentItemId item tpl to get compatible items for * @param modSlot Slot item should fit in - * @param botEquipBlacklist equipment that should not be picked - * @returns array of compatible items for that slot + * @param botEquipBlacklist Equipment that should not be picked + * @returns Array of compatible items for that slot */ protected getDynamicModPool(parentItemId: string, modSlot: string, botEquipBlacklist: EquipmentFilterDetails): string[]; /** * Take a list of tpls and filter out blacklisted values using itemFilterService + botEquipmentBlacklist - * @param allowedMods base mods to filter - * @param botEquipBlacklist equipment blacklist - * @param modSlot slot mods belong to + * @param allowedMods Base mods to filter + * @param botEquipBlacklist Equipment blacklist + * @param modSlot Slot mods belong to * @returns Filtered array of mod tpls */ protected filterWeaponModsByBlacklist(allowedMods: string[], botEquipBlacklist: EquipmentFilterDetails, modSlot: string): string[]; @@ -185,17 +234,17 @@ export declare class BotEquipmentModGenerator { * 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" * @param items The items where the CylinderMagazine's camora are appended to - * @param modPool modPool which should include available cartridges - * @param parentId The CylinderMagazine's UID - * @param parentTemplate The CylinderMagazine's template + * @param modPool ModPool which should include available cartridges + * @param cylinderMagParentId The CylinderMagazine's UID + * @param cylinderMagTemplate The CylinderMagazine's template */ - protected fillCamora(items: Item[], modPool: Mods, parentId: string, parentTemplate: ITemplateItem): void; + protected fillCamora(items: Item[], modPool: Mods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; /** - * Take a record of camoras and merge the compatable shells into one array - * @param camorasWithShells camoras we want to merge into one array - * @returns string array of shells fro luitple camora sources + * Take a record of camoras and merge the compatible shells into one array + * @param camorasWithShells Dictionary of camoras we want to merge into one array + * @returns String array of shells for multiple camora sources */ - protected mergeCamoraPoolsTogether(camorasWithShells: Record): string[]; + protected mergeCamoraPools(camorasWithShells: Record): string[]; /** * Filter out non-whitelisted weapon scopes * Controlled by bot.json weaponSightWhitelist diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/BotGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/BotGenerator.d.ts index 8144f70..8ab4371 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/BotGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/BotGenerator.d.ts @@ -1,32 +1,32 @@ -import { BotInventoryGenerator } from "@spt-aki/generators/BotInventoryGenerator"; -import { BotLevelGenerator } from "@spt-aki/generators/BotLevelGenerator"; -import { BotDifficultyHelper } from "@spt-aki/helpers/BotDifficultyHelper"; -import { BotHelper } from "@spt-aki/helpers/BotHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { WeightedRandomHelper } from "@spt-aki/helpers/WeightedRandomHelper"; -import { Health as PmcHealth, IBaseJsonSkills, IBaseSkill, IBotBase, Info, Skills as botSkills } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { Appearance, Health, IBotType } from "@spt-aki/models/eft/common/tables/IBotType"; -import { BotGenerationDetails } from "@spt-aki/models/spt/bots/BotGenerationDetails"; -import { IBotConfig } from "@spt-aki/models/spt/config/IBotConfig"; -import { IPmcConfig } from "@spt-aki/models/spt/config/IPmcConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { BotEquipmentFilterService } from "@spt-aki/services/BotEquipmentFilterService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { SeasonalEventService } from "@spt-aki/services/SeasonalEventService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { BotInventoryGenerator } from "@spt/generators/BotInventoryGenerator"; +import { BotLevelGenerator } from "@spt/generators/BotLevelGenerator"; +import { BotDifficultyHelper } from "@spt/helpers/BotDifficultyHelper"; +import { BotHelper } from "@spt/helpers/BotHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IBaseJsonSkills, IBaseSkill, IBotBase, Info, Health as PmcHealth, Skills as botSkills } from "@spt/models/eft/common/tables/IBotBase"; +import { Appearance, Health, IBotType, Inventory } from "@spt/models/eft/common/tables/IBotType"; +import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; +import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; +import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { ItemFilterService } from "@spt/services/ItemFilterService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class BotGenerator { protected logger: ILogger; protected hashUtil: HashUtil; protected randomUtil: RandomUtil; protected timeUtil: TimeUtil; - protected jsonUtil: JsonUtil; protected profileHelper: ProfileHelper; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected botInventoryGenerator: BotInventoryGenerator; protected botLevelGenerator: BotLevelGenerator; protected botEquipmentFilterService: BotEquipmentFilterService; @@ -35,10 +35,12 @@ export declare class BotGenerator { protected botDifficultyHelper: BotDifficultyHelper; protected seasonalEventService: SeasonalEventService; protected localisationService: LocalisationService; + protected itemFilterService: ItemFilterService; protected configServer: ConfigServer; + protected cloner: ICloner; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, jsonUtil: JsonUtil, profileHelper: ProfileHelper, databaseServer: DatabaseServer, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, botDifficultyHelper: BotDifficultyHelper, seasonalEventService: SeasonalEventService, localisationService: LocalisationService, configServer: ConfigServer); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, botDifficultyHelper: BotDifficultyHelper, seasonalEventService: SeasonalEventService, localisationService: LocalisationService, itemFilterService: ItemFilterService, configServer: ConfigServer, cloner: ICloner); /** * Generate a player scav bot object * @param role e.g. assault / pmcbot @@ -48,12 +50,20 @@ export declare class BotGenerator { */ generatePlayerScav(sessionId: string, role: string, difficulty: string, botTemplate: IBotType): IBotBase; /** - * Create x number of bots of the type/side/difficulty defined in botGenerationDetails + * Create 1 bots of the type/side/difficulty defined in botGenerationDetails * @param sessionId Session id * @param botGenerationDetails details on how to generate bots - * @returns array of bots + * @returns constructed bot */ - prepareAndGenerateBots(sessionId: string, botGenerationDetails: BotGenerationDetails): IBotBase[]; + prepareAndGenerateBot(sessionId: string, botGenerationDetails: BotGenerationDetails): IBotBase; + /** + * Get a clone of the default bot base object and adjust its role/side/difficulty values + * @param botRole Role bot should have + * @param botSide Side bot should have + * @param difficulty Difficult bot should have + * @returns Cloned bot base + */ + protected getPreparedBotBase(botRole: string, botSide: string, difficulty: string): IBotBase; /** * Get a clone of the database\bots\base.json file * @returns IBotBase object @@ -62,14 +72,20 @@ export declare class BotGenerator { /** * Create a IBotBase object with equipment/loot/exp etc * @param sessionId Session id - * @param bot bots base file + * @param bot Bots base file * @param botJsonTemplate Bot template from db/bots/x.json * @param botGenerationDetails details on how to generate the bot * @returns IBotBase object */ protected generateBot(sessionId: string, bot: IBotBase, botJsonTemplate: IBotType, botGenerationDetails: BotGenerationDetails): IBotBase; + protected addAdditionalPocketLootWeightsForUnheardBot(botJsonTemplate: IBotType): void; /** - * Choose various appearance settings for a bot using weights + * Remove items from item.json/lootableItemBlacklist from bots inventory + * @param botInventory Bot to filter + */ + protected removeBlacklistedLootFromBotTemplate(botInventory: Inventory): void; + /** + * Choose various appearance settings for a bot using weights: head/body/feet/hands * @param bot Bot to adjust * @param appearance Appearance settings to choose from * @param botGenerationDetails Generation details @@ -78,11 +94,14 @@ export declare class BotGenerator { /** * Create a bot nickname * @param botJsonTemplate x.json from database - * @param isPlayerScav Will bot be player scav + * @param botGenerationDetails * @param botRole role of bot e.g. assault + * @param sessionId OPTIONAL: profile session id * @returns Nickname for bot */ - protected generateBotNickname(botJsonTemplate: IBotType, isPlayerScav: boolean, botRole: string, sessionId: string): string; + protected generateBotNickname(botJsonTemplate: IBotType, botGenerationDetails: BotGenerationDetails, botRole: string, sessionId?: string): string; + protected shouldSimulatePlayerScavName(botRole: string, isPlayerScav: boolean): boolean; + protected addPlayerScavNameSimulationSuffix(nickname: string): string; /** * Log the number of PMCs generated to the debug console * @param output Generated bot array, ready to send to client @@ -109,23 +128,41 @@ export declare class BotGenerator { */ protected getSkillsWithRandomisedProgressValue(skills: Record, isCommonSkills: boolean): IBaseSkill[]; /** - * Generate a random Id for a bot and apply to bots _id and aid value + * Generate an id+aid for a bot and apply * @param bot bot to update * @returns updated IBotBase object */ - protected generateId(bot: IBotBase): IBotBase; - protected generateInventoryID(profile: IBotBase): IBotBase; + protected addIdsToBot(bot: IBotBase): void; + /** + * Update a profiles profile.Inventory.equipment value with a freshly generated one + * Update all inventory items that make use of this value too + * @param profile Profile to update + */ + protected generateInventoryId(profile: IBotBase): void; /** * Randomise a bots game version and account category * Chooses from all the game versions (standard, eod etc) * Chooses account type (default, Sherpa, etc) * @param botInfo bot info object to update + * @returns Chosen game version */ - protected getRandomisedGameVersionAndCategory(botInfo: Info): void; + protected setRandomisedGameVersionAndCategory(botInfo: Info): string; /** * Add a side-specific (usec/bear) dogtag item to a bots inventory * @param bot bot to add dogtag to * @returns Bot with dogtag added */ - protected generateDogtag(bot: IBotBase): IBotBase; + protected addDogtagToBot(bot: IBotBase): void; + /** + * Get a dogtag tpl that matches the bots game version and side + * @param side Usec/Bear + * @param gameVersion edge_of_darkness / standard + * @returns item tpl + */ + protected getDogtagTplByGameVersionAndSide(side: string, gameVersion: string): string; + /** + * Adjust a PMCs pocket tpl to UHD if necessary, otherwise do nothing + * @param bot Pmc object to adjust + */ + protected setPmcPocketsByGameVersion(bot: IBotBase): void; } diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/BotInventoryGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/BotInventoryGenerator.d.ts index cd3609f..1ea549c 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/BotInventoryGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/BotInventoryGenerator.d.ts @@ -1,26 +1,27 @@ -import { BotEquipmentModGenerator } from "@spt-aki/generators/BotEquipmentModGenerator"; -import { BotLootGenerator } from "@spt-aki/generators/BotLootGenerator"; -import { BotWeaponGenerator } from "@spt-aki/generators/BotWeaponGenerator"; -import { BotGeneratorHelper } from "@spt-aki/helpers/BotGeneratorHelper"; -import { BotHelper } from "@spt-aki/helpers/BotHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { WeightedRandomHelper } from "@spt-aki/helpers/WeightedRandomHelper"; -import { Inventory as PmcInventory } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { Chances, Generation, IBotType, Inventory, Mods } from "@spt-aki/models/eft/common/tables/IBotType"; -import { EquipmentSlots } from "@spt-aki/models/enums/EquipmentSlots"; -import { EquipmentFilterDetails, IBotConfig, RandomisationDetails } from "@spt-aki/models/spt/config/IBotConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { BotEquipmentModPoolService } from "@spt-aki/services/BotEquipmentModPoolService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { BotEquipmentModGenerator } from "@spt/generators/BotEquipmentModGenerator"; +import { BotLootGenerator } from "@spt/generators/BotLootGenerator"; +import { BotWeaponGenerator } from "@spt/generators/BotWeaponGenerator"; +import { BotGeneratorHelper } from "@spt/helpers/BotGeneratorHelper"; +import { BotHelper } from "@spt/helpers/BotHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { Chances, Equipment, Generation, IBotType, Inventory } from "@spt/models/eft/common/tables/IBotType"; +import { EquipmentSlots } from "@spt/models/enums/EquipmentSlots"; +import { IGenerateEquipmentProperties } from "@spt/models/spt/bots/IGenerateEquipmentProperties"; +import { EquipmentFilterDetails, IBotConfig } from "@spt/models/spt/config/IBotConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { BotEquipmentModPoolService } from "@spt/services/BotEquipmentModPoolService"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class BotInventoryGenerator { protected logger: ILogger; protected hashUtil: HashUtil; protected randomUtil: RandomUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected botWeaponGenerator: BotWeaponGenerator; protected botLootGenerator: BotLootGenerator; protected botGeneratorHelper: BotGeneratorHelper; @@ -32,7 +33,7 @@ export declare class BotInventoryGenerator { protected botEquipmentModGenerator: BotEquipmentModGenerator; protected configServer: ConfigServer; protected botConfig: IBotConfig; - constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, databaseServer: DatabaseServer, botWeaponGenerator: BotWeaponGenerator, botLootGenerator: BotLootGenerator, botGeneratorHelper: BotGeneratorHelper, botHelper: BotHelper, weightedRandomHelper: WeightedRandomHelper, itemHelper: ItemHelper, localisationService: LocalisationService, botEquipmentModPoolService: BotEquipmentModPoolService, botEquipmentModGenerator: BotEquipmentModGenerator, configServer: ConfigServer); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, databaseService: DatabaseService, botWeaponGenerator: BotWeaponGenerator, botLootGenerator: BotLootGenerator, botGeneratorHelper: BotGeneratorHelper, botHelper: BotHelper, weightedRandomHelper: WeightedRandomHelper, itemHelper: ItemHelper, localisationService: LocalisationService, botEquipmentModPoolService: BotEquipmentModPoolService, botEquipmentModGenerator: BotEquipmentModGenerator, configServer: ConfigServer); /** * Add equipment/weapons/loot to bot * @param sessionId Session id @@ -40,9 +41,10 @@ export declare class BotInventoryGenerator { * @param botRole Role bot has (assault/pmcBot) * @param isPmc Is bot being converted into a pmc * @param botLevel Level of bot being generated + * @param chosenGameVersion Game version for bot, only really applies for PMCs * @returns PmcInventory object with equipment/weapons/loot */ - generateInventory(sessionId: string, botJsonTemplate: IBotType, botRole: string, isPmc: boolean, botLevel: number): PmcInventory; + generateInventory(sessionId: string, botJsonTemplate: IBotType, botRole: string, isPmc: boolean, botLevel: number, chosenGameVersion: string): PmcInventory; /** * Create a pmcInventory object with all the base/generic items needed * @returns PmcInventory object @@ -51,26 +53,32 @@ export declare class BotInventoryGenerator { /** * Add equipment to a bot * @param templateInventory bot/x.json data from db - * @param equipmentChances Chances items will be added to bot + * @param wornItemChances Chances items will be added to bot * @param botRole Role bot has (assault/pmcBot) * @param botInventory Inventory to add equipment to * @param botLevel Level of bot + * @param chosenGameVersion Game version for bot, only really applies for PMCs */ - protected generateAndAddEquipmentToBot(templateInventory: Inventory, equipmentChances: Chances, botRole: string, botInventory: PmcInventory, botLevel: number): void; + protected generateAndAddEquipmentToBot(templateInventory: Inventory, wornItemChances: Chances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string): void; + /** + * Remove non-armored rigs from parameter data + * @param templateEquipment Equpiment to filter TacticalVest of + */ + protected filterRigsToThoseWithProtection(templateEquipment: Equipment): void; + /** + * Remove armored rigs from parameter data + * @param templateEquipment Equpiment to filter TacticalVest of + */ + protected filterRigsToThoseWithoutProtection(templateEquipment: Equipment): void; /** * Add a piece of equipment with mods to inventory from the provided pools - * @param equipmentSlot Slot to select an item for - * @param equipmentPool Possible items to choose from - * @param modPool Possible mods to apply to item chosen - * @param spawnChances Chances items will be chosen to be added - * @param botRole Role of bot e.g. assault - * @param inventory Inventory to add item into - * @param randomisationDetails settings from bot.json to adjust how item is generated + * @param settings Values to adjust how item is chosen and added to bot + * @returns true when item added */ - protected generateEquipment(equipmentSlot: string, equipmentPool: Record, modPool: Mods, spawnChances: Chances, botRole: string, inventory: PmcInventory, randomisationDetails: RandomisationDetails): void; + protected generateEquipment(settings: IGenerateEquipmentProperties): boolean; /** * Get all possible mods for item and filter down based on equipment blacklist from bot.json config - * @param itemTpl Item mod pool is being retreived and filtered + * @param itemTpl Item mod pool is being retrieved and filtered * @param equipmentBlacklist blacklist to filter mod pool with * @returns Filtered pool of mods */ @@ -83,8 +91,8 @@ export declare class BotInventoryGenerator { * @param botInventory Inventory to add weapons to * @param botRole assault/pmcBot/bossTagilla etc * @param isPmc Is the bot being generated as a pmc - * @param botLevel level of bot having weapon generated * @param itemGenerationLimitsMinMax Limits for items the bot can have + * @param botLevel level of bot having weapon generated */ protected generateAndAddWeaponsToBot(templateInventory: Inventory, equipmentChances: Chances, sessionId: string, botInventory: PmcInventory, botRole: string, isPmc: boolean, itemGenerationLimitsMinMax: Generation, botLevel: number): void; /** diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/BotLevelGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/BotLevelGenerator.d.ts index c8b590f..dee61e2 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/BotLevelGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/BotLevelGenerator.d.ts @@ -1,29 +1,37 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; -import { IRandomisedBotLevelResult } from "@spt-aki/models/eft/bot/IRandomisedBotLevelResult"; -import { IExpTable } from "@spt-aki/models/eft/common/IGlobals"; -import { IBotBase } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { BotGenerationDetails } from "@spt-aki/models/spt/bots/BotGenerationDetails"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { MinMax } from "@spt/models/common/MinMax"; +import { IRandomisedBotLevelResult } from "@spt/models/eft/bot/IRandomisedBotLevelResult"; +import { IBotBase } from "@spt/models/eft/common/tables/IBotBase"; +import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class BotLevelGenerator { protected logger: ILogger; protected randomUtil: RandomUtil; - protected databaseServer: DatabaseServer; - constructor(logger: ILogger, randomUtil: RandomUtil, databaseServer: DatabaseServer); + protected databaseService: DatabaseService; + constructor(logger: ILogger, randomUtil: RandomUtil, databaseService: DatabaseService); /** * Return a randomised bot level and exp value - * @param levelDetails min and max of level for bot - * @param botGenerationDetails Deatils to help generate a bot - * @param bot being level is being generated for + * @param levelDetails Min and max of level for bot + * @param botGenerationDetails Details to help generate a bot + * @param bot Bot the level is being generated for * @returns IRandomisedBotLevelResult object */ generateBotLevel(levelDetails: MinMax, botGenerationDetails: BotGenerationDetails, bot: IBotBase): IRandomisedBotLevelResult; /** - * Get the highest level a bot can be relative to the players level, but no futher than the max size from globals.exp_table - * @param playerLevel Players current level - * @param relativeDeltaMax max delta above player level to go - * @returns highest level possible for bot + * Get the highest level a bot can be relative to the players level, but no further than the max size from globals.exp_table + * @param botGenerationDetails Details to help generate a bot + * @param levelDetails + * @param maxLevel Max possible level + * @returns Highest level possible for bot */ - protected getHighestRelativeBotLevel(playerLevel: number, relativeDeltaMax: number, levelDetails: MinMax, expTable: IExpTable[]): number; + protected getHighestRelativeBotLevel(botGenerationDetails: BotGenerationDetails, levelDetails: MinMax, maxLevel: number): number; + /** + * Get the lowest level a bot can be relative to the players level, but no lower than 1 + * @param botGenerationDetails Details to help generate a bot + * @param levelDetails + * @param maxlevel Max level allowed + * @returns Lowest level possible for bot + */ + protected getLowestRelativeBotLevel(botGenerationDetails: BotGenerationDetails, levelDetails: MinMax, maxlevel: number): number; } diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/BotLootGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/BotLootGenerator.d.ts index 7a4c521..fee56ce 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/BotLootGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/BotLootGenerator.d.ts @@ -1,40 +1,46 @@ -import { BotWeaponGenerator } from "@spt-aki/generators/BotWeaponGenerator"; -import { BotGeneratorHelper } from "@spt-aki/helpers/BotGeneratorHelper"; -import { BotWeaponGeneratorHelper } from "@spt-aki/helpers/BotWeaponGeneratorHelper"; -import { HandbookHelper } from "@spt-aki/helpers/HandbookHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { WeightedRandomHelper } from "@spt-aki/helpers/WeightedRandomHelper"; -import { Inventory as PmcInventory } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { IBotType, Inventory, ModsChances } from "@spt-aki/models/eft/common/tables/IBotType"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { EquipmentSlots } from "@spt-aki/models/enums/EquipmentSlots"; -import { IBotConfig } from "@spt-aki/models/spt/config/IBotConfig"; -import { IPmcConfig } from "@spt-aki/models/spt/config/IPmcConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { BotLootCacheService } from "@spt-aki/services/BotLootCacheService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { BotWeaponGenerator } from "@spt/generators/BotWeaponGenerator"; +import { BotGeneratorHelper } from "@spt/helpers/BotGeneratorHelper"; +import { BotHelper } from "@spt/helpers/BotHelper"; +import { HandbookHelper } from "@spt/helpers/HandbookHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, Inventory, ModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { EquipmentSlots } from "@spt/models/enums/EquipmentSlots"; +import { IItemSpawnLimitSettings } from "@spt/models/spt/bots/IItemSpawnLimitSettings"; +import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; +import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class BotLootGenerator { protected logger: ILogger; protected hashUtil: HashUtil; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; - protected databaseServer: DatabaseServer; + protected inventoryHelper: InventoryHelper; + protected databaseService: DatabaseService; protected handbookHelper: HandbookHelper; protected botGeneratorHelper: BotGeneratorHelper; protected botWeaponGenerator: BotWeaponGenerator; - protected botWeaponGeneratorHelper: BotWeaponGeneratorHelper; protected weightedRandomHelper: WeightedRandomHelper; + protected botHelper: BotHelper; protected botLootCacheService: BotLootCacheService; protected localisationService: LocalisationService; protected configServer: ConfigServer; + protected cloner: ICloner; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, itemHelper: ItemHelper, databaseServer: DatabaseServer, handbookHelper: HandbookHelper, botGeneratorHelper: BotGeneratorHelper, botWeaponGenerator: BotWeaponGenerator, botWeaponGeneratorHelper: BotWeaponGeneratorHelper, weightedRandomHelper: WeightedRandomHelper, botLootCacheService: BotLootCacheService, localisationService: LocalisationService, configServer: ConfigServer); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, itemHelper: ItemHelper, inventoryHelper: InventoryHelper, databaseService: DatabaseService, handbookHelper: HandbookHelper, botGeneratorHelper: BotGeneratorHelper, botWeaponGenerator: BotWeaponGenerator, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, botLootCacheService: BotLootCacheService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + protected getItemSpawnLimitsForBot(botRole: string): IItemSpawnLimitSettings; /** * Add loot to bots containers * @param sessionId Session id @@ -54,7 +60,7 @@ export declare class BotLootGenerator { /** * Force healing items onto bot to ensure they can heal in-raid * @param botInventory Inventory to add items to - * @param botRole Role of bot (sptBear/sptUsec) + * @param botRole Role of bot (pmcBEAR/pmcUSEC) */ protected addForcedMedicalItemsToPmcSecure(botInventory: PmcInventory, botRole: string): void; /** @@ -66,17 +72,26 @@ export declare class BotLootGenerator { */ protected getRandomisedCount(min: number, max: number, nValue: number): number; /** - * Take random items from a pool and add to an inventory until totalItemCount or totalValueLimit is reached - * @param pool Pool of items to pick from + * Take random items from a pool and add to an inventory until totalItemCount or totalValueLimit or space limit is reached + * @param pool Pool of items to pick from with weight * @param equipmentSlots What equipment slot will the loot items be added to * @param totalItemCount Max count of items to add * @param inventoryToAddItemsTo Bot inventory loot will be added to * @param botRole Role of the bot loot is being generated for (assault/pmcbot) - * @param useLimits Should item limit counts be used as defined in config/bot.json + * @param itemSpawnLimits Item spawn limits the bot must adhere to * @param totalValueLimitRub Total value of loot allowed in roubles * @param isPmc Is bot being generated for a pmc */ - protected addLootFromPool(pool: ITemplateItem[], equipmentSlots: string[], totalItemCount: number, inventoryToAddItemsTo: PmcInventory, botRole: string, useLimits?: boolean, totalValueLimitRub?: number, isPmc?: boolean): void; + protected addLootFromPool(pool: Record, equipmentSlots: string[], totalItemCount: number, inventoryToAddItemsTo: PmcInventory, botRole: string, itemSpawnLimits?: IItemSpawnLimitSettings, totalValueLimitRub?: number, isPmc?: boolean, containersIdFull?: Set): void; + protected createWalletLoot(walletId: string): Item[][]; + /** + * Some items need child items to function, add them to the itemToAddChildrenTo array + * @param itemToAddTemplate Db template of item to check + * @param itemToAddChildrenTo Item to add children to + * @param isPmc Is the item being generated for a pmc (affects money/ammo stack sizes) + * @param botRole role bot has that owns item + */ + protected addRequiredChildItemsToParent(itemToAddTemplate: ITemplateItem, itemToAddChildrenTo: Item[], isPmc: boolean, botRole: string): void; /** * Add generated weapons to inventory as loot * @param botInventory inventory to add preset to @@ -86,45 +101,29 @@ export declare class BotLootGenerator { * @param botRole bots role .e.g. pmcBot * @param isPmc are we generating for a pmc */ - protected addLooseWeaponsToInventorySlot(sessionId: string, botInventory: PmcInventory, equipmentSlot: string, templateInventory: Inventory, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): void; - /** - * Get a random item from the pool parameter using the biasedRandomNumber system - * @param pool Pool of items to pick an item from - * @param isPmc Is the bot being created a pmc - * @returns ITemplateItem object - */ - protected getRandomItemFromPoolByRole(pool: ITemplateItem[], botRole: string): ITemplateItem; - /** - * Get the loot nvalue from botconfig - * @param botRole Role of bot e.g. assault/bosstagilla/sptBear - * @returns nvalue as number - */ - protected getBotLootNValueByRole(botRole: string): number; + protected addLooseWeaponsToInventorySlot(sessionId: string, botInventory: PmcInventory, equipmentSlot: string, templateInventory: Inventory, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number, containersIdFull?: Set): void; /** * Hydrate item limit array to contain items that have a limit for a specific bot type * All values are set to 0 - * @param isPmc Is the bot a pmc * @param botRole Role the bot has * @param limitCount */ - protected initItemLimitArray(isPmc: boolean, botRole: string, limitCount: Record): void; + protected initItemLimitArray(botRole: string, limitCount: Record): void; /** * Check if an item has reached its bot-specific spawn limit * @param itemTemplate Item we check to see if its reached spawn limit * @param botRole Bot type - * @param isPmc Is bot we're working with a pmc - * @param limitCount Spawn limits for items on bot - * @param itemSpawnLimits The limits this bot is allowed to have + * @param itemSpawnLimits * @returns true if item has reached spawn limit */ - protected itemHasReachedSpawnLimit(itemTemplate: ITemplateItem, botRole: string, isPmc: boolean, limitCount: Record, itemSpawnLimits: Record): boolean; + protected itemHasReachedSpawnLimit(itemTemplate: ITemplateItem, botRole: string, itemSpawnLimits: IItemSpawnLimitSettings): boolean; /** * Randomise the stack size of a money object, uses different values for pmc or scavs - * @param isPmc Is money on a PMC bot + * @param botRole Role bot has that has money stack * @param itemTemplate item details from db * @param moneyItem Money item to randomise */ - protected randomiseMoneyStackSize(isPmc: boolean, itemTemplate: ITemplateItem, moneyItem: Item): void; + protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: Item): void; /** * Randomise the size of an ammo stack * @param isPmc Is ammo on a PMC bot @@ -135,11 +134,10 @@ export declare class BotLootGenerator { /** * 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 - * @param isPmc is the bot we want limits for a pmc * @param botRole what role does the bot have * @returns Dictionary of tplIds and limit */ - protected getItemSpawnLimitsForBotType(isPmc: boolean, botRole: string): Record; + protected getItemSpawnLimitsForBotType(botRole: string): Record; /** * Get the parentId or tplId of item inside spawnLimits object if it exists * @param itemTemplate item we want to look for in spawn limits diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/BotWeaponGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/BotWeaponGenerator.d.ts index 125b43f..5559bfa 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/BotWeaponGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/BotWeaponGenerator.d.ts @@ -1,31 +1,30 @@ -import { BotEquipmentModGenerator } from "@spt-aki/generators/BotEquipmentModGenerator"; -import { IInventoryMagGen } from "@spt-aki/generators/weapongen/IInventoryMagGen"; -import { BotGeneratorHelper } from "@spt-aki/helpers/BotGeneratorHelper"; -import { BotWeaponGeneratorHelper } from "@spt-aki/helpers/BotWeaponGeneratorHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { WeightedRandomHelper } from "@spt-aki/helpers/WeightedRandomHelper"; -import { Inventory as PmcInventory } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { GenerationData, Inventory, ModsChances } from "@spt-aki/models/eft/common/tables/IBotType"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { GenerateWeaponResult } from "@spt-aki/models/spt/bots/GenerateWeaponResult"; -import { IBotConfig } from "@spt-aki/models/spt/config/IBotConfig"; -import { IPmcConfig } from "@spt-aki/models/spt/config/IPmcConfig"; -import { IRepairConfig } from "@spt-aki/models/spt/config/IRepairConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { BotWeaponModLimitService } from "@spt-aki/services/BotWeaponModLimitService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { RepairService } from "@spt-aki/services/RepairService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { BotEquipmentModGenerator } from "@spt/generators/BotEquipmentModGenerator"; +import { IInventoryMagGen } from "@spt/generators/weapongen/IInventoryMagGen"; +import { BotGeneratorHelper } from "@spt/helpers/BotGeneratorHelper"; +import { BotWeaponGeneratorHelper } from "@spt/helpers/BotWeaponGeneratorHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { GenerationData, Inventory, ModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { GenerateWeaponResult } from "@spt/models/spt/bots/GenerateWeaponResult"; +import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; +import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +import { IRepairConfig } from "@spt/models/spt/config/IRepairConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { BotWeaponModLimitService } from "@spt/services/BotWeaponModLimitService"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { RepairService } from "@spt/services/RepairService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class BotWeaponGenerator { - protected jsonUtil: JsonUtil; protected logger: ILogger; protected hashUtil: HashUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected itemHelper: ItemHelper; protected weightedRandomHelper: WeightedRandomHelper; protected botGeneratorHelper: BotGeneratorHelper; @@ -37,11 +36,12 @@ export declare class BotWeaponGenerator { protected localisationService: LocalisationService; protected repairService: RepairService; protected inventoryMagGenComponents: IInventoryMagGen[]; + protected cloner: ICloner; protected readonly modMagazineSlotId = "mod_magazine"; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; protected repairConfig: IRepairConfig; - constructor(jsonUtil: JsonUtil, logger: ILogger, hashUtil: HashUtil, databaseServer: DatabaseServer, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, botGeneratorHelper: BotGeneratorHelper, randomUtil: RandomUtil, configServer: ConfigServer, botWeaponGeneratorHelper: BotWeaponGeneratorHelper, botWeaponModLimitService: BotWeaponModLimitService, botEquipmentModGenerator: BotEquipmentModGenerator, localisationService: LocalisationService, repairService: RepairService, inventoryMagGenComponents: IInventoryMagGen[]); + constructor(logger: ILogger, hashUtil: HashUtil, databaseService: DatabaseService, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, botGeneratorHelper: BotGeneratorHelper, randomUtil: RandomUtil, configServer: ConfigServer, botWeaponGeneratorHelper: BotWeaponGeneratorHelper, botWeaponModLimitService: BotWeaponModLimitService, botEquipmentModGenerator: BotEquipmentModGenerator, localisationService: LocalisationService, repairService: RepairService, inventoryMagGenComponents: IInventoryMagGen[], cloner: ICloner); /** * Pick a random weapon based on weightings and generate a functional weapon * @param equipmentSlot Primary/secondary/holster diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/FenceBaseAssortGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/FenceBaseAssortGenerator.d.ts index 5eab03e..784022f 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/FenceBaseAssortGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/FenceBaseAssortGenerator.d.ts @@ -1,26 +1,53 @@ -import { HandbookHelper } from "@spt-aki/helpers/HandbookHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { ITraderConfig } from "@spt-aki/models/spt/config/ITraderConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { ItemFilterService } from "@spt-aki/services/ItemFilterService"; -import { SeasonalEventService } from "@spt-aki/services/SeasonalEventService"; +import { HandbookHelper } from "@spt/helpers/HandbookHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { FenceService } from "@spt/services/FenceService"; +import { ItemFilterService } from "@spt/services/ItemFilterService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { HashUtil } from "@spt/utils/HashUtil"; export declare class FenceBaseAssortGenerator { protected logger: ILogger; - protected databaseServer: DatabaseServer; + protected hashUtil: HashUtil; + protected databaseService: DatabaseService; protected handbookHelper: HandbookHelper; protected itemHelper: ItemHelper; + protected presetHelper: PresetHelper; protected itemFilterService: ItemFilterService; protected seasonalEventService: SeasonalEventService; + protected localisationService: LocalisationService; protected configServer: ConfigServer; + protected fenceService: FenceService; protected traderConfig: ITraderConfig; - constructor(logger: ILogger, databaseServer: DatabaseServer, handbookHelper: HandbookHelper, itemHelper: ItemHelper, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, configServer: ConfigServer); + constructor(logger: ILogger, hashUtil: HashUtil, databaseService: DatabaseService, handbookHelper: HandbookHelper, itemHelper: ItemHelper, presetHelper: PresetHelper, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, localisationService: LocalisationService, configServer: ConfigServer, fenceService: FenceService); /** - * Create base fence assorts dynamically and store in db + * Create base fence assorts dynamically and store in memory */ generateFenceBaseAssorts(): void; + /** + * Check ammo in boxes + loose ammos has a penetration value above the configured value in trader.json / ammoMaxPenLimit + * @param rootItemDb Ammo box or ammo item from items.db + * @returns True if penetration value is above limit set in config + */ + protected isAmmoAbovePenetrationLimit(rootItemDb: ITemplateItem): boolean; + /** + * Get the penetration power value of an ammo, works with ammo boxes and raw ammos + * @param rootItemDb Ammo box or ammo item from items.db + * @returns Penetration power of passed in item, undefined if it doesnt have a power + */ + protected getAmmoPenetrationPower(rootItemDb: ITemplateItem): number | undefined; + /** + * Add soft inserts + armor plates to an armor + * @param armor Armor item array to add mods into + * @param itemDbDetails Armor items db template + */ + protected addChildrenToArmorModSlots(armor: Item[], itemDbDetails: ITemplateItem): void; /** * Check if item is valid for being added to fence assorts * @param item Item to check diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/LocationGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/LocationGenerator.d.ts index 1305af1..222b0ab 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/LocationGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/LocationGenerator.d.ts @@ -1,22 +1,21 @@ -import { ContainerHelper } from "@spt-aki/helpers/ContainerHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PresetHelper } from "@spt-aki/helpers/PresetHelper"; -import { RagfairServerHelper } from "@spt-aki/helpers/RagfairServerHelper"; -import { IContainerMinMax, IStaticContainer } from "@spt-aki/models/eft/common/ILocation"; -import { ILocationBase } from "@spt-aki/models/eft/common/ILocationBase"; -import { ILooseLoot, Spawnpoint, SpawnpointTemplate, SpawnpointsForced } from "@spt-aki/models/eft/common/ILooseLoot"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { IStaticAmmoDetails, IStaticContainerData, IStaticForcedProps, IStaticLootDetails } from "@spt-aki/models/eft/common/tables/ILootBase"; -import { ILocationConfig } from "@spt-aki/models/spt/config/ILocationConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { SeasonalEventService } from "@spt-aki/services/SeasonalEventService"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { MathUtil } from "@spt-aki/utils/MathUtil"; -import { ObjectId } from "@spt-aki/utils/ObjectId"; -import { ProbabilityObjectArray, RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { ContainerHelper } from "@spt/helpers/ContainerHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { IContainerMinMax, IStaticAmmoDetails, IStaticContainer, IStaticContainerData, IStaticForcedProps, IStaticLootDetails } from "@spt/models/eft/common/ILocation"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { ILooseLoot, Spawnpoint, SpawnpointTemplate, SpawnpointsForced } from "@spt/models/eft/common/ILooseLoot"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { ItemFilterService } from "@spt/services/ItemFilterService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { MathUtil } from "@spt/utils/MathUtil"; +import { ObjectId } from "@spt/utils/ObjectId"; +import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; export interface IContainerItem { items: Item[]; width: number; @@ -30,24 +29,24 @@ export interface IContainerGroupCount { } export declare class LocationGenerator { protected logger: ILogger; - protected databaseServer: DatabaseServer; - protected jsonUtil: JsonUtil; + protected databaseService: DatabaseService; protected objectId: ObjectId; protected randomUtil: RandomUtil; - protected ragfairServerHelper: RagfairServerHelper; protected itemHelper: ItemHelper; protected mathUtil: MathUtil; protected seasonalEventService: SeasonalEventService; protected containerHelper: ContainerHelper; protected presetHelper: PresetHelper; protected localisationService: LocalisationService; + protected itemFilterService: ItemFilterService; protected configServer: ConfigServer; + protected cloner: ICloner; protected locationConfig: ILocationConfig; - constructor(logger: ILogger, databaseServer: DatabaseServer, jsonUtil: JsonUtil, objectId: ObjectId, randomUtil: RandomUtil, ragfairServerHelper: RagfairServerHelper, itemHelper: ItemHelper, mathUtil: MathUtil, seasonalEventService: SeasonalEventService, containerHelper: ContainerHelper, presetHelper: PresetHelper, localisationService: LocalisationService, configServer: ConfigServer); + constructor(logger: ILogger, databaseService: DatabaseService, objectId: ObjectId, randomUtil: RandomUtil, itemHelper: ItemHelper, mathUtil: MathUtil, seasonalEventService: SeasonalEventService, containerHelper: ContainerHelper, presetHelper: PresetHelper, localisationService: LocalisationService, itemFilterService: ItemFilterService, configServer: ConfigServer, cloner: ICloner); /** * Create an array of container objects with randomised loot * @param locationBase Map base to generate containers for - * @param staticAmmoDist Static ammo distribution - database.loot.staticAmmo + * @param staticAmmoDist Static ammo distribution * @returns Array of container objects */ generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): SpawnpointTemplate[]; @@ -146,6 +145,6 @@ export declare class LocationGenerator { * @param chosenTpl Tpl we want to get item with * @returns Item object */ - protected getItemInArray(items: Item[], chosenTpl: string): Item; - protected createStaticLootItem(tpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; + protected getItemInArray(items: Item[], chosenTpl: string): Item | undefined; + protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; } diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/LootGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/LootGenerator.d.ts index d8e816c..953ac3d 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/LootGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/LootGenerator.d.ts @@ -1,20 +1,20 @@ -import { InventoryHelper } from "@spt-aki/helpers/InventoryHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PresetHelper } from "@spt-aki/helpers/PresetHelper"; -import { WeightedRandomHelper } from "@spt-aki/helpers/WeightedRandomHelper"; -import { IPreset } from "@spt-aki/models/eft/common/IGlobals"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { AddItem } from "@spt-aki/models/eft/inventory/IAddItemRequestData"; -import { ISealedAirdropContainerSettings, RewardDetails } from "@spt-aki/models/spt/config/IInventoryConfig"; -import { LootItem } from "@spt-aki/models/spt/services/LootItem"; -import { LootRequest } from "@spt-aki/models/spt/services/LootRequest"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { ItemFilterService } from "@spt-aki/services/ItemFilterService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { RagfairLinkedItemService } from "@spt-aki/services/RagfairLinkedItemService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IPreset } from "@spt/models/eft/common/IGlobals"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { ISealedAirdropContainerSettings, RewardDetails } from "@spt/models/spt/config/IInventoryConfig"; +import { LootItem } from "@spt/models/spt/services/LootItem"; +import { LootRequest } from "@spt/models/spt/services/LootRequest"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { ItemFilterService } from "@spt/services/ItemFilterService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { RagfairLinkedItemService } from "@spt/services/RagfairLinkedItemService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; type ItemLimit = { current: number; max: number; @@ -22,7 +22,7 @@ type ItemLimit = { export declare class LootGenerator { protected logger: ILogger; protected hashUtil: HashUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; protected presetHelper: PresetHelper; @@ -31,13 +31,20 @@ export declare class LootGenerator { protected localisationService: LocalisationService; protected ragfairLinkedItemService: RagfairLinkedItemService; protected itemFilterService: ItemFilterService; - constructor(logger: ILogger, hashUtil: HashUtil, databaseServer: DatabaseServer, randomUtil: RandomUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, inventoryHelper: InventoryHelper, weightedRandomHelper: WeightedRandomHelper, localisationService: LocalisationService, ragfairLinkedItemService: RagfairLinkedItemService, itemFilterService: ItemFilterService); + constructor(logger: ILogger, hashUtil: HashUtil, databaseService: DatabaseService, randomUtil: RandomUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, inventoryHelper: InventoryHelper, weightedRandomHelper: WeightedRandomHelper, localisationService: LocalisationService, ragfairLinkedItemService: RagfairLinkedItemService, itemFilterService: ItemFilterService); /** * Generate a list of items based on configuration options parameter * @param options parameters to adjust how loot is generated * @returns An array of loot items */ createRandomLoot(options: LootRequest): LootItem[]; + /** + * Filter armor items by their front plates protection level - top if its a helmet + * @param armor Armor preset to check + * @param options Loot request options - armor level etc + * @returns True if item has desired armor level + */ + protected isArmorOfDesiredProtectionLevel(armor: IPreset, options: LootRequest): boolean; /** * Construct item limit record to hold max and current item count for each item type * @param limits limits as defined in config @@ -65,49 +72,42 @@ export declare class LootGenerator { protected getRandomisedStackCount(item: ITemplateItem, options: LootRequest): number; /** * Find a random item in items.json and add to result array - * @param globalDefaultPresets presets to choose from - * @param itemTypeCounts item limit counts - * @param itemBlacklist items to skip - * @param result array to add found preset to + * @param presetPool Presets to choose from + * @param itemTypeCounts Item limit counts + * @param itemBlacklist Items to skip + * @param result Array to add chosen preset to * @returns true if preset was valid and added to pool */ - protected findAndAddRandomPresetToLoot(globalDefaultPresets: [string, IPreset][], itemTypeCounts: Record, itemBlacklist: string[], result: LootItem[]): boolean; /** * Sealed weapon containers have a weapon + associated mods inside them + assortment of other things (food/meds) * @param containerSettings sealed weapon container settings - * @returns Array of items to add to player inventory + * @returns Array of item with children arrays */ - getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): AddItem[]; + getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): Item[][]; /** * Get non-weapon mod rewards for a sealed container * @param containerSettings Sealed weapon container settings * @param weaponDetailsDb Details for the weapon to reward player - * @returns AddItem array + * @returns Array of item with children arrays */ - protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): AddItem[]; + protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): Item[][]; /** * Iterate over the container weaponModRewardLimits settings and create an array of weapon mods to reward player * @param containerSettings Sealed weapon container settings * @param linkedItemsToWeapon All items that can be attached/inserted into weapon * @param chosenWeaponPreset The weapon preset given to player as reward - * @returns AddItem array + * @returns Array of item with children arrays */ - protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): AddItem[]; + protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): Item[][]; /** * Handle event-related loot containers - currently just the halloween jack-o-lanterns that give food rewards * @param rewardContainerDetails - * @returns AddItem array + * @returns Array of item with children arrays */ - getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): AddItem[]; - /** - * A bug in inventoryHelper.addItem() means you cannot add the same item to the array twice with a count of 1, it causes duplication - * Default adds 1, or increments count - * @param itemTplToAdd items tpl we want to add to array - * @param resultsArray Array to add item tpl to - */ - protected addOrIncrementItemToArray(itemTplToAdd: string, resultsArray: AddItem[]): void; + getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): Item[][]; } export {}; diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/PMCLootGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/PMCLootGenerator.d.ts index 251bde2..f197435 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/PMCLootGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/PMCLootGenerator.d.ts @@ -1,35 +1,39 @@ -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { IPmcConfig } from "@spt-aki/models/spt/config/IPmcConfig"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { ItemFilterService } from "@spt-aki/services/ItemFilterService"; -import { SeasonalEventService } from "@spt-aki/services/SeasonalEventService"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { ItemFilterService } from "@spt/services/ItemFilterService"; +import { RagfairPriceService } from "@spt/services/RagfairPriceService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; /** * Handle the generation of dynamic PMC loot in pockets and backpacks * and the removal of blacklisted items */ export declare class PMCLootGenerator { protected itemHelper: ItemHelper; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected configServer: ConfigServer; protected itemFilterService: ItemFilterService; + protected ragfairPriceService: RagfairPriceService; protected seasonalEventService: SeasonalEventService; - protected pocketLootPool: string[]; - protected vestLootPool: string[]; - protected backpackLootPool: string[]; + protected weightedRandomHelper: WeightedRandomHelper; + protected pocketLootPool: Record; + protected vestLootPool: Record; + protected backpackLootPool: Record; protected pmcConfig: IPmcConfig; - constructor(itemHelper: ItemHelper, databaseServer: DatabaseServer, configServer: ConfigServer, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService); + constructor(itemHelper: ItemHelper, databaseService: DatabaseService, configServer: ConfigServer, itemFilterService: ItemFilterService, ragfairPriceService: RagfairPriceService, seasonalEventService: SeasonalEventService, weightedRandomHelper: WeightedRandomHelper); /** * Create an array of loot items a PMC can have in their pockets * @returns string array of tpls */ - generatePMCPocketLootPool(): string[]; + generatePMCPocketLootPool(botRole: string): Record; /** * Create an array of loot items a PMC can have in their vests * @returns string array of tpls */ - generatePMCVestLootPool(): string[]; + generatePMCVestLootPool(botRole: string): Record; /** * Check if item has a width/height that lets it fit into a 2x2 slot * 1x1 / 1x2 / 2x1 / 2x2 @@ -37,9 +41,16 @@ export declare class PMCLootGenerator { * @returns true if it fits */ protected itemFitsInto2By2Slot(item: ITemplateItem): boolean; + /** + * Check if item has a width/height that lets it fit into a 1x2 slot + * 1x1 / 1x2 / 2x1 + * @param item Item to check size of + * @returns true if it fits + */ + protected itemFitsInto1By2Slot(item: ITemplateItem): boolean; /** * Create an array of loot items a PMC can have in their backpack * @returns string array of tpls */ - generatePMCBackpackLootPool(): string[]; + generatePMCBackpackLootPool(botRole: string): Record; } diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/PlayerScavGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/PlayerScavGenerator.d.ts index feea27f..2414150 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/PlayerScavGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/PlayerScavGenerator.d.ts @@ -1,48 +1,53 @@ -import { BotGenerator } from "@spt-aki/generators/BotGenerator"; -import { BotGeneratorHelper } from "@spt-aki/helpers/BotGeneratorHelper"; -import { BotHelper } from "@spt-aki/helpers/BotHelper"; -import { BotWeaponGeneratorHelper } from "@spt-aki/helpers/BotWeaponGeneratorHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Skills, Stats } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { IBotType } from "@spt-aki/models/eft/common/tables/IBotType"; -import { IPlayerScavConfig, KarmaLevel } from "@spt-aki/models/spt/config/IPlayerScavConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { BotLootCacheService } from "@spt-aki/services/BotLootCacheService"; -import { FenceService } from "@spt-aki/services/FenceService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { BotGenerator } from "@spt/generators/BotGenerator"; +import { BotGeneratorHelper } from "@spt/helpers/BotGeneratorHelper"; +import { BotHelper } from "@spt/helpers/BotHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBotBase, Skills, Stats } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType } from "@spt/models/eft/common/tables/IBotType"; +import { IPlayerScavConfig, KarmaLevel } from "@spt/models/spt/config/IPlayerScavConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { FenceService } from "@spt/services/FenceService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class PlayerScavGenerator { protected logger: ILogger; protected randomUtil: RandomUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected hashUtil: HashUtil; protected itemHelper: ItemHelper; - protected botWeaponGeneratorHelper: BotWeaponGeneratorHelper; protected botGeneratorHelper: BotGeneratorHelper; protected saveServer: SaveServer; protected profileHelper: ProfileHelper; protected botHelper: BotHelper; - protected jsonUtil: JsonUtil; protected fenceService: FenceService; protected botLootCacheService: BotLootCacheService; protected localisationService: LocalisationService; protected botGenerator: BotGenerator; protected configServer: ConfigServer; + protected cloner: ICloner; protected playerScavConfig: IPlayerScavConfig; - constructor(logger: ILogger, randomUtil: RandomUtil, databaseServer: DatabaseServer, hashUtil: HashUtil, itemHelper: ItemHelper, botWeaponGeneratorHelper: BotWeaponGeneratorHelper, botGeneratorHelper: BotGeneratorHelper, saveServer: SaveServer, profileHelper: ProfileHelper, botHelper: BotHelper, jsonUtil: JsonUtil, fenceService: FenceService, botLootCacheService: BotLootCacheService, localisationService: LocalisationService, botGenerator: BotGenerator, configServer: ConfigServer); + constructor(logger: ILogger, randomUtil: RandomUtil, databaseService: DatabaseService, hashUtil: HashUtil, itemHelper: ItemHelper, botGeneratorHelper: BotGeneratorHelper, saveServer: SaveServer, profileHelper: ProfileHelper, botHelper: BotHelper, fenceService: FenceService, botLootCacheService: BotLootCacheService, localisationService: LocalisationService, botGenerator: BotGenerator, configServer: ConfigServer, cloner: ICloner); /** * Update a player profile to include a new player scav profile * @param sessionID session id to specify what profile is updated * @returns profile object */ generate(sessionID: string): IPmcData; + /** + * Add items picked from `playerscav.lootItemsToAddChancePercent` + * @param possibleItemsToAdd dict of tpl + % chance to be added + * @param scavData + * @param containersToAddTo Possible slotIds to add loot to + */ + protected addAdditionalLootToPlayerScavContainers(possibleItemsToAdd: Record, scavData: IBotBase, containersToAddTo: string[]): void; /** * Get the scav karama level for a profile * Is also the fence trader rep level diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/RagfairAssortGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/RagfairAssortGenerator.d.ts index 26acae2..4c6cf1c 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/RagfairAssortGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/RagfairAssortGenerator.d.ts @@ -1,52 +1,50 @@ -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { IPreset } from "@spt-aki/models/eft/common/IGlobals"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SeasonalEventService } from "@spt-aki/services/SeasonalEventService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { IPreset } from "@spt/models/eft/common/IGlobals"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { HashUtil } from "@spt/utils/HashUtil"; export declare class RagfairAssortGenerator { - protected jsonUtil: JsonUtil; protected hashUtil: HashUtil; protected itemHelper: ItemHelper; + protected presetHelper: PresetHelper; protected databaseServer: DatabaseServer; protected seasonalEventService: SeasonalEventService; protected configServer: ConfigServer; - protected generatedAssortItems: Item[]; + protected generatedAssortItems: Item[][]; protected ragfairConfig: IRagfairConfig; - constructor(jsonUtil: JsonUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseServer: DatabaseServer, seasonalEventService: SeasonalEventService, configServer: ConfigServer); + protected ragfairItemInvalidBaseTypes: string[]; + constructor(hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, databaseServer: DatabaseServer, seasonalEventService: SeasonalEventService, configServer: ConfigServer); /** - * Get an array of unique items that can be sold on the flea - * @returns array of unique items + * Get an array of arrays that can be sold on the flea + * Each sub array contains item + children (if any) + * @returns array of arrays */ - getAssortItems(): Item[]; + getAssortItems(): Item[][]; /** * Check internal generatedAssortItems array has objects * @returns true if array has objects */ protected assortsAreGenerated(): boolean; /** - * Generate an array of items the flea can sell - * @returns array of unique items + * Generate an array of arrays (item + children) the flea can sell + * @returns array of arrays (item + children) */ - protected generateRagfairAssortItems(): Item[]; + protected generateRagfairAssortItems(): Item[][]; /** - * Get presets from globals.json - * @returns Preset object array + * Get presets from globals to add to flea + * ragfairConfig.dynamic.showDefaultPresetsOnly decides if its all presets or just defaults + * @returns IPreset array */ - protected getPresets(): IPreset[]; - /** - * Get default presets from globals.json - * @returns Preset object array - */ - protected getDefaultPresets(): IPreset[]; + protected getPresetsToAdd(): IPreset[]; /** * Create a base assort item and return it with populated values + 999999 stack count + unlimited count = true * @param tplId tplid to add to item * @param id id to add to item - * @returns hydrated Item object + * @returns Hydrated Item object */ - protected createRagfairAssortItem(tplId: string, id?: string): Item; + protected createRagfairAssortRootItem(tplId: string, id?: string): Item; } diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/RagfairOfferGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/RagfairOfferGenerator.d.ts index 25316c0..9435390 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/RagfairOfferGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/RagfairOfferGenerator.d.ts @@ -1,35 +1,38 @@ -import { RagfairAssortGenerator } from "@spt-aki/generators/RagfairAssortGenerator"; -import { HandbookHelper } from "@spt-aki/helpers/HandbookHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper"; -import { PresetHelper } from "@spt-aki/helpers/PresetHelper"; -import { RagfairServerHelper } from "@spt-aki/helpers/RagfairServerHelper"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { IBarterScheme } from "@spt-aki/models/eft/common/tables/ITrader"; -import { IRagfairOffer, OfferRequirement } from "@spt-aki/models/eft/ragfair/IRagfairOffer"; -import { Dynamic, IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { FenceService } from "@spt-aki/services/FenceService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { RagfairOfferService } from "@spt-aki/services/RagfairOfferService"; -import { RagfairPriceService } from "@spt-aki/services/RagfairPriceService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { RagfairAssortGenerator } from "@spt/generators/RagfairAssortGenerator"; +import { BotHelper } from "@spt/helpers/BotHelper"; +import { HandbookHelper } from "@spt/helpers/HandbookHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PaymentHelper } from "@spt/helpers/PaymentHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { RagfairServerHelper } from "@spt/helpers/RagfairServerHelper"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; +import { IRagfairOffer, IRagfairOfferUser, OfferRequirement } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { Dynamic, IArmorPlateBlacklistSettings, IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { FenceService } from "@spt/services/FenceService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { RagfairOfferService } from "@spt/services/RagfairOfferService"; +import { RagfairPriceService } from "@spt/services/RagfairPriceService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class RagfairOfferGenerator { protected logger: ILogger; - protected jsonUtil: JsonUtil; protected hashUtil: HashUtil; protected randomUtil: RandomUtil; protected timeUtil: TimeUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected ragfairServerHelper: RagfairServerHelper; + protected profileHelper: ProfileHelper; protected handbookHelper: HandbookHelper; + protected botHelper: BotHelper; protected saveServer: SaveServer; protected presetHelper: PresetHelper; protected ragfairAssortGenerator: RagfairAssortGenerator; @@ -40,6 +43,7 @@ export declare class RagfairOfferGenerator { protected fenceService: FenceService; protected itemHelper: ItemHelper; protected configServer: ConfigServer; + protected cloner: ICloner; protected ragfairConfig: IRagfairConfig; protected allowedFleaPriceItemsForBarter: { tpl: string; @@ -47,7 +51,7 @@ export declare class RagfairOfferGenerator { }[]; /** Internal counter to ensure each offer created has a unique value for its intId property */ protected offerCounter: number; - constructor(logger: ILogger, jsonUtil: JsonUtil, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, databaseServer: DatabaseServer, ragfairServerHelper: RagfairServerHelper, handbookHelper: HandbookHelper, saveServer: SaveServer, presetHelper: PresetHelper, ragfairAssortGenerator: RagfairAssortGenerator, ragfairOfferService: RagfairOfferService, ragfairPriceService: RagfairPriceService, localisationService: LocalisationService, paymentHelper: PaymentHelper, fenceService: FenceService, itemHelper: ItemHelper, configServer: ConfigServer); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, databaseService: DatabaseService, ragfairServerHelper: RagfairServerHelper, profileHelper: ProfileHelper, handbookHelper: HandbookHelper, botHelper: BotHelper, saveServer: SaveServer, presetHelper: PresetHelper, ragfairAssortGenerator: RagfairAssortGenerator, ragfairOfferService: RagfairOfferService, ragfairPriceService: RagfairPriceService, localisationService: LocalisationService, paymentHelper: PaymentHelper, fenceService: FenceService, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner); /** * Create a flea offer and store it in the Ragfair server offers array * @param userID Owner of the offer @@ -56,9 +60,9 @@ export declare class RagfairOfferGenerator { * @param barterScheme Cost of item (currency or barter) * @param loyalLevel Loyalty level needed to buy item * @param sellInOnePiece Flags sellInOnePiece to be true - * @returns IRagfairOffer + * @returns Created flea offer */ - createFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; + createAndAddFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; /** * Create an offer object ready to send to ragfairOfferService.addOffer() * @param userID Owner of the offer @@ -66,10 +70,17 @@ export declare class RagfairOfferGenerator { * @param items Items in the offer * @param barterScheme Cost of item (currency or barter) * @param loyalLevel Loyalty level needed to buy item - * @param sellInOnePiece Set StackObjectsCount to 1 + * @param isPackOffer Is offer being created flaged as a pack * @returns IRagfairOffer */ - protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; + protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; + /** + * Create the user object stored inside each flea offer object + * @param userID user creating the offer + * @param isTrader Is the user creating the offer a trader + * @returns IRagfairOfferUser + */ + createUserDataForFleaOffer(userID: string, isTrader: boolean): IRagfairOfferUser; /** * Calculate the offer price that's listed on the flea listing * @param offerRequirements barter requirements for offer @@ -119,22 +130,28 @@ export declare class RagfairOfferGenerator { * Create multiple offers for items by using a unique list of items we've generated previously * @param expiredOffers optional, expired offers to regenerate */ - generateDynamicOffers(expiredOffers?: Item[]): Promise; + generateDynamicOffers(expiredOffers?: Item[][]): Promise; /** - * @param assortItemIndex Index of assort item - * @param assortItemsToProcess Item array containing index - * @param expiredOffers Currently expired offers on flea + * @param assortItemWithChildren Item with its children to process into offers + * @param isExpiredOffer is an expired offer * @param config Ragfair dynamic config */ - protected createOffersForItems(assortItemIndex: string, assortItemsToProcess: Item[], expiredOffers: Item[], config: Dynamic): Promise; + protected createOffersFromAssort(assortItemWithChildren: Item[], isExpiredOffer: boolean, config: Dynamic): Promise; + /** + * iterate over an items chidren and look for plates above desired level and remove them + * @param presetWithChildren preset to check for plates + * @param plateSettings Settings + * @returns True if plate removed + */ + protected removeBannedPlatesFromPreset(presetWithChildren: Item[], plateSettings: IArmorPlateBlacklistSettings): boolean; /** * Create one flea offer for a specific item - * @param items Item to create offer for + * @param itemWithChildren Item to create offer for * @param isPreset Is item a weapon preset * @param itemDetails raw db item details * @returns Item array */ - protected createSingleOfferForItem(items: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; + protected createSingleOfferForItem(itemWithChildren: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; /** * Generate trader offers on flea using the traders assort data * @param traderID Trader to generate offers for @@ -144,38 +161,45 @@ export declare class RagfairOfferGenerator { * Get array of an item with its mods + condition properties (e.g durability) * Apply randomisation adjustments to condition if item base is found in ragfair.json/dynamic/condition * @param userID id of owner of item - * @param itemWithMods Item and mods, get condition of first item (only first array item is used) + * @param itemWithMods Item and mods, get condition of first item (only first array item is modified) * @param itemDetails db details of first item - * @returns */ - protected randomiseItemUpdProperties(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): Item[]; + protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; /** * Get the relevant condition id if item tpl matches in ragfair.json/condition * @param tpl Item to look for matching condition object * @returns condition id */ - protected getDynamicConditionIdForTpl(tpl: string): string; + protected getDynamicConditionIdForTpl(tpl: string): string | undefined; /** * Alter an items condition based on its item base type * @param conditionSettingsId also the parentId of item being altered - * @param item Item to adjust condition details of + * @param itemWithMods Item to adjust condition details of * @param itemDetails db item details of first item in array */ - protected randomiseItemCondition(conditionSettingsId: string, item: Item, itemDetails: ITemplateItem): void; + protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; /** * Adjust an items durability/maxDurability value - * @param item item (weapon/armor) to adjust - * @param multiplier Value to multiple durability by + * @param item item (weapon/armor) to Adjust + * @param itemDbDetails Weapon details from db + * @param maxMultiplier Value to multiply max durability by + * @param currentMultiplier Value to multiply current durability by */ - protected randomiseDurabilityValues(item: Item, multiplier: number): void; + protected randomiseWeaponDurability(item: Item, itemDbDetails: ITemplateItem, maxMultiplier: number, currentMultiplier: number): void; + /** + * Randomise the durabiltiy values for an armors plates and soft inserts + * @param armorWithMods Armor item with its child mods + * @param currentMultiplier Chosen multipler to use for current durability value + * @param maxMultiplier Chosen multipler to use for max durability value + */ + protected randomiseArmorDurabilityValues(armorWithMods: Item[], currentMultiplier: number, maxMultiplier: number): void; /** * Add missing conditions to an item if needed * Durabiltiy for repairable items * HpResource for medical items * @param item item to add conditions to - * @returns Item with conditions added */ - protected addMissingConditions(item: Item): Item; + protected addMissingConditions(item: Item): void; /** * Create a barter-based barter scheme, if not possible, fall back to making barter scheme currency based * @param offerItems Items for sale in offer @@ -192,10 +216,10 @@ export declare class RagfairOfferGenerator { }[]; /** * Create a random currency-based barter scheme for an array of items - * @param offerItems Items on offer + * @param offerWithChildren Items on offer * @param isPackOffer Is the barter scheme being created for a pack offer * @param multipler What to multiply the resulting price by * @returns Barter scheme for offer */ - protected createCurrencyBarterScheme(offerItems: Item[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; + protected createCurrencyBarterScheme(offerWithChildren: Item[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; } diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/RepeatableQuestGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/RepeatableQuestGenerator.d.ts index 35297fa..77c4e79 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/RepeatableQuestGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/RepeatableQuestGenerator.d.ts @@ -1,53 +1,34 @@ -import { HandbookHelper } from "@spt-aki/helpers/HandbookHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PresetHelper } from "@spt-aki/helpers/PresetHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { RagfairServerHelper } from "@spt-aki/helpers/RagfairServerHelper"; -import { RepeatableQuestHelper } from "@spt-aki/helpers/RepeatableQuestHelper"; -import { Exit } from "@spt-aki/models/eft/common/ILocationBase"; -import { TraderInfo } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ICompletion, ICompletionAvailableFor, IElimination, IEliminationCondition, IExploration, IExplorationCondition, IPickup, IRepeatableQuest, IReward, IRewards } from "@spt-aki/models/eft/common/tables/IRepeatableQuests"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { IBaseQuestConfig, IBossInfo, IEliminationConfig, IQuestConfig, IRepeatableQuestConfig } from "@spt-aki/models/spt/config/IQuestConfig"; -import { IQuestTypePool } from "@spt-aki/models/spt/repeatable/IQuestTypePool"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { ItemFilterService } from "@spt-aki/services/ItemFilterService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { PaymentService } from "@spt-aki/services/PaymentService"; -import { ProfileFixerService } from "@spt-aki/services/ProfileFixerService"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { MathUtil } from "@spt-aki/utils/MathUtil"; -import { ObjectId } from "@spt-aki/utils/ObjectId"; -import { ProbabilityObjectArray, RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { RepeatableQuestRewardGenerator } from "@spt/generators/RepeatableQuestRewardGenerator"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { RepeatableQuestHelper } from "@spt/helpers/RepeatableQuestHelper"; +import { Exit } from "@spt/models/eft/common/ILocationBase"; +import { TraderInfo } from "@spt/models/eft/common/tables/IBotBase"; +import { IQuestCondition, IQuestConditionCounterCondition } from "@spt/models/eft/common/tables/IQuest"; +import { IRepeatableQuest } from "@spt/models/eft/common/tables/IRepeatableQuests"; +import { IBossInfo, IEliminationConfig, IQuestConfig, IRepeatableQuestConfig } from "@spt/models/spt/config/IQuestConfig"; +import { IQuestTypePool } from "@spt/models/spt/repeatable/IQuestTypePool"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { MathUtil } from "@spt/utils/MathUtil"; +import { ObjectId } from "@spt/utils/ObjectId"; +import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; export declare class RepeatableQuestGenerator { - protected timeUtil: TimeUtil; protected logger: ILogger; protected randomUtil: RandomUtil; - protected httpResponse: HttpResponseUtil; protected mathUtil: MathUtil; - protected jsonUtil: JsonUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected itemHelper: ItemHelper; - protected presetHelper: PresetHelper; - protected profileHelper: ProfileHelper; - protected profileFixerService: ProfileFixerService; - protected handbookHelper: HandbookHelper; - protected ragfairServerHelper: RagfairServerHelper; - protected eventOutputHolder: EventOutputHolder; protected localisationService: LocalisationService; - protected paymentService: PaymentService; protected objectId: ObjectId; - protected itemFilterService: ItemFilterService; protected repeatableQuestHelper: RepeatableQuestHelper; + protected repeatableQuestRewardGenerator: RepeatableQuestRewardGenerator; protected configServer: ConfigServer; + protected cloner: ICloner; protected questConfig: IQuestConfig; - constructor(timeUtil: TimeUtil, logger: ILogger, randomUtil: RandomUtil, httpResponse: HttpResponseUtil, mathUtil: MathUtil, jsonUtil: JsonUtil, databaseServer: DatabaseServer, itemHelper: ItemHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, handbookHelper: HandbookHelper, ragfairServerHelper: RagfairServerHelper, eventOutputHolder: EventOutputHolder, localisationService: LocalisationService, paymentService: PaymentService, objectId: ObjectId, itemFilterService: ItemFilterService, repeatableQuestHelper: RepeatableQuestHelper, configServer: ConfigServer); + constructor(logger: ILogger, randomUtil: RandomUtil, mathUtil: MathUtil, databaseService: DatabaseService, itemHelper: ItemHelper, localisationService: LocalisationService, objectId: ObjectId, repeatableQuestHelper: RepeatableQuestHelper, repeatableQuestRewardGenerator: RepeatableQuestRewardGenerator, configServer: ConfigServer, cloner: ICloner); /** * 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 @@ -66,7 +47,7 @@ export declare class RepeatableQuestGenerator { * @param repeatableConfig The configuration for the repeatably kind (daily, weekly) as configured in QuestConfig for the requestd quest * @returns Object of quest type format for "Elimination" (see assets/database/templates/repeatableQuests.json) */ - protected generateEliminationQuest(pmcLevel: number, traderId: string, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IElimination; + protected generateEliminationQuest(pmcLevel: number, traderId: string, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; /** * Get a number of kills neded to complete elimination quest * @param targetKey Target type desired e.g. anyPmc/bossBully/Savage @@ -82,7 +63,7 @@ export declare class RepeatableQuestGenerator { * @param {string} location the location on which to fulfill the elimination quest * @returns {IEliminationCondition} object of "Elimination"-location-subcondition */ - protected generateEliminationLocation(location: string[]): IEliminationCondition; + protected generateEliminationLocation(location: string[]): IQuestConditionCounterCondition; /** * Create kill condition for an elimination quest * @param target Bot type target of elimination quest e.g. "AnyPmc", "Savage" @@ -92,7 +73,7 @@ export declare class RepeatableQuestGenerator { * @param allowedWeaponCategory What category of weapon must be used - undefined = any * @returns IEliminationCondition object */ - protected generateEliminationCondition(target: string, targetedBodyParts: string[], distance: number, allowedWeapon: string, allowedWeaponCategory: string): IEliminationCondition; + protected generateEliminationCondition(target: string, targetedBodyParts: string[], distance: number, allowedWeapon: string, allowedWeaponCategory: string): IQuestConditionCounterCondition; /** * Generates a valid Completion quest * @@ -101,7 +82,7 @@ export declare class RepeatableQuestGenerator { * @param {object} repeatableConfig The configuration for the repeatably kind (daily, weekly) as configured in QuestConfig for the requestd quest * @returns {object} object of quest type format for "Completion" (see assets/database/templates/repeatableQuests.json) */ - protected generateCompletionQuest(pmcLevel: number, traderId: string, repeatableConfig: IRepeatableQuestConfig): ICompletion; + protected generateCompletionQuest(pmcLevel: number, traderId: string, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; /** * 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) @@ -110,7 +91,7 @@ export declare class RepeatableQuestGenerator { * @param {integer} value amount of items of this specific type to request * @returns {object} object of "Completion"-condition */ - protected generateCompletionAvailableForFinish(itemTpl: string, value: number): ICompletionAvailableFor; + protected generateCompletionAvailableForFinish(itemTpl: string, value: number): IQuestCondition; /** * Generates a valid Exploration quest * @@ -120,8 +101,15 @@ export declare class RepeatableQuestGenerator { * @param {object} repeatableConfig The configuration for the repeatably kind (daily, weekly) as configured in QuestConfig for the requestd quest * @returns {object} object of quest type format for "Exploration" (see assets/database/templates/repeatableQuests.json) */ - protected generateExplorationQuest(pmcLevel: number, traderId: string, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IExploration; - protected generatePickupQuest(pmcLevel: number, traderId: string, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IPickup; + protected generateExplorationQuest(pmcLevel: number, traderId: string, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; + /** + * Filter a maps exits to just those for the desired side + * @param locationKey Map id (e.g. factory4_day) + * @param playerSide Scav/Pmc + * @returns Array of Exit objects + */ + protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; + protected generatePickupQuest(pmcLevel: number, traderId: string, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; /** * Convert a location into an quest code can read (e.g. factory4_day into 55f2d3fd4bdc2d5f408b4567) * @param locationKey e.g factory4_day @@ -135,70 +123,7 @@ export declare class RepeatableQuestGenerator { * @param {string} exit The exit name to generate the condition for * @returns {object} Exit condition */ - protected generateExplorationExitCondition(exit: Exit): IExplorationCondition; - /** - * Generate the reward for a mission. A reward can consist of - * - Experience - * - Money - * - Items - * - Trader Reputation - * - * The reward is dependent on the player level as given by the wiki. The exact mapping of pmcLevel to - * experience / money / items / trader reputation can be defined in QuestConfig.js - * - * There's also a random variation of the reward the spread of which can be also defined in the config. - * - * Additonaly, a scaling factor w.r.t. quest difficulty going from 0.2...1 can be used - * - * @param {integer} pmcLevel player's level - * @param {number} difficulty a reward scaling factor goint from 0.2 to 1 - * @param {string} traderId the trader for reputation gain (and possible in the future filtering of reward item type based on trader) - * @param {object} repeatableConfig The configuration for the repeatably kind (daily, weekly) as configured in QuestConfig for the requestd quest - * @returns {object} object of "Reward"-type that can be given for a repeatable mission - */ - protected generateReward(pmcLevel: number, difficulty: number, traderId: string, repeatableConfig: IRepeatableQuestConfig, questConfig: IBaseQuestConfig): IRewards; - /** - * Should reward item have stack size increased (25% chance) - * @param item Item to possibly increase stack size of - * @param maxRoublePriceToStack Maximum rouble price an item can be to still be chosen for stacking - * @returns True if it should - */ - protected canIncreaseRewardItemStackSize(item: ITemplateItem, maxRoublePriceToStack: number): boolean; - /** - * Get a randomised number a reward items stack size should be based on its handbook price - * @param item Reward item to get stack size for - * @returns Stack size value - */ - protected getRandomisedRewardItemStackSizeByPrice(item: ITemplateItem): number; - /** - * Select a number of items that have a colelctive value of the passed in parameter - * @param repeatableConfig Config - * @param roublesBudget Total value of items to return - * @returns Array of reward items that fit budget - */ - protected chooseRewardItemsWithinBudget(repeatableConfig: IRepeatableQuestConfig, roublesBudget: number, traderId: string): ITemplateItem[]; - /** - * Helper to create a reward item structured as required by the client - * - * @param {string} tpl ItemId of the rewarded item - * @param {integer} value Amount of items to give - * @param {integer} index All rewards will be appended to a list, for unknown reasons the client wants the index - * @returns {object} Object of "Reward"-item-type - */ - protected generateRewardItem(tpl: string, value: number, index: number, preset?: Item[]): IReward; - /** - * Picks rewardable items from items.json. This means they need to fit into the inventory and they shouldn't be keys (debatable) - * @param repeatableQuestConfig Config file - * @returns List of rewardable items [[_tpl, itemTemplate],...] - */ - protected getRewardableItems(repeatableQuestConfig: IRepeatableQuestConfig, traderId: string): [string, ITemplateItem][]; - /** - * 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. - * @param {string} tpl template id of item to check - * @returns True if item is valid reward - */ - protected isValidRewardItem(tpl: string, repeatableQuestConfig: IRepeatableQuestConfig, itemBaseWhitelist: string[]): boolean; + protected generateExplorationExitCondition(exit: Exit): IQuestConditionCounterCondition; /** * 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 diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/RepeatableQuestRewardGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/RepeatableQuestRewardGenerator.d.ts new file mode 100644 index 0000000..1e09994 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/generators/RepeatableQuestRewardGenerator.d.ts @@ -0,0 +1,156 @@ +import { HandbookHelper } from "@spt/helpers/HandbookHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IQuestReward, IQuestRewards } from "@spt/models/eft/common/tables/IQuest"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { IBaseQuestConfig, IQuestConfig, IRepeatableQuestConfig, IRewardScaling } from "@spt/models/spt/config/IQuestConfig"; +import { IQuestRewardValues } from "@spt/models/spt/repeatable/IQuestRewardValues"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { ItemFilterService } from "@spt/services/ItemFilterService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { MathUtil } from "@spt/utils/MathUtil"; +import { ObjectId } from "@spt/utils/ObjectId"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +export declare class RepeatableQuestRewardGenerator { + protected logger: ILogger; + protected randomUtil: RandomUtil; + protected mathUtil: MathUtil; + protected databaseService: DatabaseService; + protected itemHelper: ItemHelper; + protected presetHelper: PresetHelper; + protected handbookHelper: HandbookHelper; + protected localisationService: LocalisationService; + protected objectId: ObjectId; + protected itemFilterService: ItemFilterService; + protected seasonalEventService: SeasonalEventService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected questConfig: IQuestConfig; + constructor(logger: ILogger, randomUtil: RandomUtil, mathUtil: MathUtil, databaseService: DatabaseService, itemHelper: ItemHelper, presetHelper: PresetHelper, handbookHelper: HandbookHelper, localisationService: LocalisationService, objectId: ObjectId, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, configServer: ConfigServer, cloner: ICloner); + /** + * Generate the reward for a mission. A reward can consist of + * - Experience + * - Money + * - Items + * - Trader Reputation + * + * The reward is dependent on the player level as given by the wiki. The exact mapping of pmcLevel to + * experience / money / items / trader reputation can be defined in QuestConfig.js + * + * There's also a random variation of the reward the spread of which can be also defined in the config. + * + * Additionally, a scaling factor w.r.t. quest difficulty going from 0.2...1 can be used + * + * @param {integer} pmcLevel player's level + * @param {number} difficulty a reward scaling factor from 0.2 to 1 + * @param {string} traderId the trader for reputation gain (and possible in the future filtering of reward item type based on trader) + * @param {object} repeatableConfig The configuration for the repeatable kind (daily, weekly) as configured in QuestConfig for the requested quest + * @returns {object} object of "Reward"-type that can be given for a repeatable mission + */ + generateReward(pmcLevel: number, difficulty: number, traderId: string, repeatableConfig: IRepeatableQuestConfig, questConfig: IBaseQuestConfig): IQuestRewards; + protected getQuestRewardValues(rewardScaling: IRewardScaling, difficulty: number, pmcLevel: number): IQuestRewardValues; + /** + * Get an array of items + stack size to give to player as reward that fit inside of a rouble budget + * @param itemPool All possible items to choose rewards from + * @param maxItemCount Total number of items to reward + * @param itemRewardBudget Rouble buget all item rewards must fit in + * @param repeatableConfig config for quest type + * @returns Items and stack size + */ + protected getRewardableItemsFromPoolWithinBudget(itemPool: ITemplateItem[], maxItemCount: number, itemRewardBudget: number, repeatableConfig: IRepeatableQuestConfig): { + item: ITemplateItem; + stackSize: number; + }[]; + /** + * Choose a random Weapon preset that fits inside of a rouble amount limit + * @param roublesBudget + * @param rewardIndex + * @returns IQuestReward + */ + protected getRandomWeaponPresetWithinBudget(roublesBudget: number, rewardIndex: number): { + weapon: IQuestReward; + price: number; + } | undefined; + /** + * @param rewardItems List of reward items to filter + * @param roublesBudget The budget remaining for rewards + * @param minPrice The minimum priced item to include + * @returns True if any items remain in `rewardItems`, false otherwise + */ + protected filterRewardPoolWithinBudget(rewardItems: ITemplateItem[], roublesBudget: number, minPrice: number): ITemplateItem[]; + /** + * Get a randomised number a reward items stack size should be based on its handbook price + * @param item Reward item to get stack size for + * @returns matching stack size for the passed in items price + */ + protected getRandomisedRewardItemStackSizeByPrice(item: ITemplateItem): number; + /** + * Should reward item have stack size increased (25% chance) + * @param item Item to increase reward stack size of + * @param maxRoublePriceToStack Maximum rouble price an item can be to still be chosen for stacking + * @param randomChanceToPass Additional randomised chance of passing + * @returns True if items stack size can be increased + */ + protected canIncreaseRewardItemStackSize(item: ITemplateItem, maxRoublePriceToStack: number, randomChanceToPass?: number): boolean; + /** + * Get a count of cartridges that fits the rouble budget amount provided + * e.g. how many M80s for 50,000 roubles + * @param itemSelected Cartridge + * @param roublesBudget Rouble budget + * @param rewardNumItems + * @returns Count that fits budget (min 1) + */ + protected calculateAmmoStackSizeThatFitsBudget(itemSelected: ITemplateItem, roublesBudget: number, rewardNumItems: number): number; + /** + * Select a number of items that have a colelctive value of the passed in parameter + * @param repeatableConfig Config + * @param roublesBudget Total value of items to return + * @param traderId Id of the trader who will give player reward + * @returns Array of reward items that fit budget + */ + protected chooseRewardItemsWithinBudget(repeatableConfig: IRepeatableQuestConfig, roublesBudget: number, traderId: string): ITemplateItem[]; + /** + * Helper to create a reward item structured as required by the client + * + * @param {string} tpl ItemId of the rewarded item + * @param {integer} count Amount of items to give + * @param {integer} index All rewards will be appended to a list, for unknown reasons the client wants the index + * @param preset Optional array of preset items + * @returns {object} Object of "Reward"-item-type + */ + protected generateItemReward(tpl: string, count: number, index: number): IQuestReward; + /** + * Helper to create a reward item structured as required by the client + * + * @param {string} tpl ItemId of the rewarded item + * @param {integer} count Amount of items to give + * @param {integer} index All rewards will be appended to a list, for unknown reasons the client wants the index + * @param preset Optional array of preset items + * @returns {object} Object of "Reward"-item-type + */ + protected generatePresetReward(tpl: string, count: number, index: number, preset?: Item[]): IQuestReward; + /** + * Picks rewardable items from items.json + * This means they must: + * - Fit into the inventory + * - Shouldn't be keys + * - Have a price greater than 0 + * @param repeatableQuestConfig Config file + * @param traderId Id of trader who will give reward to player + * @returns List of rewardable items [[_tpl, itemTemplate],...] + */ + getRewardableItems(repeatableQuestConfig: IRepeatableQuestConfig, traderId: string): [string, ITemplateItem][]; + /** + * 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. + * @param {string} tpl template id of item to check + * @returns True if item is valid reward + */ + protected isValidRewardItem(tpl: string, repeatableQuestConfig: IRepeatableQuestConfig, itemBaseWhitelist: string[]): boolean; + protected getMoneyReward(traderId: string, rewardRoubles: number, rewardIndex: number): IQuestReward; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/ScavCaseRewardGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/ScavCaseRewardGenerator.d.ts index 11e1bc3..45f2e51 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/ScavCaseRewardGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/ScavCaseRewardGenerator.d.ts @@ -1,17 +1,18 @@ -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { Product } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { Upd } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { IHideoutScavCase } from "@spt-aki/models/eft/hideout/IHideoutScavCase"; -import { IScavCaseConfig } from "@spt-aki/models/spt/config/IScavCaseConfig"; -import { RewardCountAndPriceDetails, ScavCaseRewardCountsAndPrices } from "@spt-aki/models/spt/hideout/ScavCaseRewardCountsAndPrices"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { ItemFilterService } from "@spt-aki/services/ItemFilterService"; -import { RagfairPriceService } from "@spt-aki/services/RagfairPriceService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { IHideoutScavCase } from "@spt/models/eft/hideout/IHideoutScavCase"; +import { IScavCaseConfig } from "@spt/models/spt/config/IScavCaseConfig"; +import { RewardCountAndPriceDetails, ScavCaseRewardCountsAndPrices } from "@spt/models/spt/hideout/ScavCaseRewardCountsAndPrices"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { ItemFilterService } from "@spt/services/ItemFilterService"; +import { RagfairPriceService } from "@spt/services/RagfairPriceService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; /** * Handle the creation of randomised scav case rewards */ @@ -20,20 +21,22 @@ export declare class ScavCaseRewardGenerator { protected randomUtil: RandomUtil; protected hashUtil: HashUtil; protected itemHelper: ItemHelper; - protected databaseServer: DatabaseServer; + protected presetHelper: PresetHelper; + protected databaseService: DatabaseService; protected ragfairPriceService: RagfairPriceService; + protected seasonalEventService: SeasonalEventService; protected itemFilterService: ItemFilterService; protected configServer: ConfigServer; protected scavCaseConfig: IScavCaseConfig; protected dbItemsCache: ITemplateItem[]; protected dbAmmoItemsCache: ITemplateItem[]; - constructor(logger: ILogger, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseServer: DatabaseServer, ragfairPriceService: RagfairPriceService, itemFilterService: ItemFilterService, configServer: ConfigServer); + constructor(logger: ILogger, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, seasonalEventService: SeasonalEventService, itemFilterService: ItemFilterService, configServer: ConfigServer); /** * Create an array of rewards that will be given to the player upon completing their scav case build * @param recipeId recipe of the scav case craft * @returns Product array */ - generate(recipeId: string): Product[]; + generate(recipeId: string): Item[][]; /** * Get all db items that are not blacklisted in scavcase config or global blacklist * Store in class field @@ -72,17 +75,7 @@ export declare class ScavCaseRewardGenerator { * @param rewardItems items to convert * @returns Product array */ - protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): Product[]; - /** - * Add a randomised stack count to ammo or money items - * @param item money or ammo item - * @param resultItem money or ammo item with a randomise stack size - */ - protected addStackCountToAmmoAndMoney(item: ITemplateItem, resultItem: { - _id: string; - _tpl: string; - upd: Upd; - }, rarity: string): void; + protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): Item[][]; /** * @param dbItems all items from the items.json * @param itemFilters controls how the dbItems will be filtered and returned (handbook price) diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/WeatherGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/WeatherGenerator.d.ts index 5501ee6..c9ca02a 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/WeatherGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/WeatherGenerator.d.ts @@ -1,21 +1,24 @@ -import { ApplicationContext } from "@spt-aki/context/ApplicationContext"; -import { WeightedRandomHelper } from "@spt-aki/helpers/WeightedRandomHelper"; -import { IWeather, IWeatherData } from "@spt-aki/models/eft/weather/IWeatherData"; -import { WindDirection } from "@spt-aki/models/enums/WindDirection"; -import { IWeatherConfig } from "@spt-aki/models/spt/config/IWeatherConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IWeather, IWeatherData } from "@spt/models/eft/weather/IWeatherData"; +import { WindDirection } from "@spt/models/enums/WindDirection"; +import { IWeatherConfig } from "@spt/models/spt/config/IWeatherConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class WeatherGenerator { protected weightedRandomHelper: WeightedRandomHelper; protected logger: ILogger; protected randomUtil: RandomUtil; protected timeUtil: TimeUtil; + protected seasonalEventService: SeasonalEventService; protected applicationContext: ApplicationContext; protected configServer: ConfigServer; protected weatherConfig: IWeatherConfig; - constructor(weightedRandomHelper: WeightedRandomHelper, logger: ILogger, randomUtil: RandomUtil, timeUtil: TimeUtil, applicationContext: ApplicationContext, configServer: ConfigServer); + private serverStartTimestampMS; + constructor(weightedRandomHelper: WeightedRandomHelper, logger: ILogger, randomUtil: RandomUtil, timeUtil: TimeUtil, seasonalEventService: SeasonalEventService, applicationContext: ApplicationContext, configServer: ConfigServer); /** * Get current + raid datetime and format into correct BSG format and return * @param data Weather data @@ -28,13 +31,13 @@ export declare class WeatherGenerator { * @param currentDate current date * @returns formatted time */ - protected getBsgFormattedInRaidTime(currentDate: Date): string; + protected getBsgFormattedInRaidTime(): string; /** * Get the current in-raid time * @param currentDate (new Date()) * @returns Date object of current in-raid time */ - getInRaidTime(currentDate: Date): Date; + getInRaidTime(): Date; /** * Get current time formatted to fit BSGs requirement * @param date date to format into bsg style diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/weapongen/IInventoryMagGen.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/weapongen/IInventoryMagGen.d.ts index 5586243..07bef8e 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/weapongen/IInventoryMagGen.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/weapongen/IInventoryMagGen.d.ts @@ -1,4 +1,4 @@ -import { InventoryMagGen } from "@spt-aki/generators/weapongen/InventoryMagGen"; +import { InventoryMagGen } from "@spt/generators/weapongen/InventoryMagGen"; export interface IInventoryMagGen { getPriority(): number; canHandleInventoryMagGen(inventoryMagGen: InventoryMagGen): boolean; diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/weapongen/InventoryMagGen.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/weapongen/InventoryMagGen.d.ts index 778ac53..1db9915 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/weapongen/InventoryMagGen.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/weapongen/InventoryMagGen.d.ts @@ -1,6 +1,6 @@ -import { Inventory } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { GenerationData } from "@spt-aki/models/eft/common/tables/IBotType"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; +import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; +import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class InventoryMagGen { private magCounts; private magazineTemplate; diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/weapongen/implementations/BarrelInventoryMagGen.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/weapongen/implementations/BarrelInventoryMagGen.d.ts index 3e5e708..caa4d13 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/weapongen/implementations/BarrelInventoryMagGen.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/weapongen/implementations/BarrelInventoryMagGen.d.ts @@ -1,7 +1,7 @@ -import { IInventoryMagGen } from "@spt-aki/generators/weapongen/IInventoryMagGen"; -import { InventoryMagGen } from "@spt-aki/generators/weapongen/InventoryMagGen"; -import { BotWeaponGeneratorHelper } from "@spt-aki/helpers/BotWeaponGeneratorHelper"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { IInventoryMagGen } from "@spt/generators/weapongen/IInventoryMagGen"; +import { InventoryMagGen } from "@spt/generators/weapongen/InventoryMagGen"; +import { BotWeaponGeneratorHelper } from "@spt/helpers/BotWeaponGeneratorHelper"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class BarrelInventoryMagGen implements IInventoryMagGen { protected randomUtil: RandomUtil; protected botWeaponGeneratorHelper: BotWeaponGeneratorHelper; diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/weapongen/implementations/ExternalInventoryMagGen.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/weapongen/implementations/ExternalInventoryMagGen.d.ts index edc4734..635332b 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/weapongen/implementations/ExternalInventoryMagGen.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/weapongen/implementations/ExternalInventoryMagGen.d.ts @@ -1,25 +1,27 @@ -import { IInventoryMagGen } from "@spt-aki/generators/weapongen/IInventoryMagGen"; -import { InventoryMagGen } from "@spt-aki/generators/weapongen/InventoryMagGen"; -import { BotWeaponGeneratorHelper } from "@spt-aki/helpers/BotWeaponGeneratorHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { IInventoryMagGen } from "@spt/generators/weapongen/IInventoryMagGen"; +import { InventoryMagGen } from "@spt/generators/weapongen/InventoryMagGen"; +import { BotGeneratorHelper } from "@spt/helpers/BotGeneratorHelper"; +import { BotWeaponGeneratorHelper } from "@spt/helpers/BotWeaponGeneratorHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class ExternalInventoryMagGen implements IInventoryMagGen { protected logger: ILogger; protected itemHelper: ItemHelper; protected localisationService: LocalisationService; protected botWeaponGeneratorHelper: BotWeaponGeneratorHelper; + protected botGeneratorHelper: BotGeneratorHelper; protected randomUtil: RandomUtil; - constructor(logger: ILogger, itemHelper: ItemHelper, localisationService: LocalisationService, botWeaponGeneratorHelper: BotWeaponGeneratorHelper, randomUtil: RandomUtil); + constructor(logger: ILogger, itemHelper: ItemHelper, localisationService: LocalisationService, botWeaponGeneratorHelper: BotWeaponGeneratorHelper, botGeneratorHelper: BotGeneratorHelper, randomUtil: RandomUtil); getPriority(): number; canHandleInventoryMagGen(inventoryMagGen: InventoryMagGen): boolean; process(inventoryMagGen: InventoryMagGen): void; /** - * Get a random compatible external magazine for a weapon, excluses internal magazines from possible pool + * Get a random compatible external magazine for a weapon, exclude internal magazines from possible pool * @param weaponTpl Weapon to get mag for * @returns tpl of magazine */ - protected getRandomExternalMagazineForInternalMagazineGun(weaponTpl: string, magazineBlacklist: string[]): ITemplateItem; + protected getRandomExternalMagazineForInternalMagazineGun(weaponTpl: string, magazineBlacklist: string[]): ITemplateItem | undefined; } diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/weapongen/implementations/InternalMagazineInventoryMagGen.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/weapongen/implementations/InternalMagazineInventoryMagGen.d.ts index 70efdb5..5ae7415 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/weapongen/implementations/InternalMagazineInventoryMagGen.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/weapongen/implementations/InternalMagazineInventoryMagGen.d.ts @@ -1,6 +1,6 @@ -import { IInventoryMagGen } from "@spt-aki/generators/weapongen/IInventoryMagGen"; -import { InventoryMagGen } from "@spt-aki/generators/weapongen/InventoryMagGen"; -import { BotWeaponGeneratorHelper } from "@spt-aki/helpers/BotWeaponGeneratorHelper"; +import { IInventoryMagGen } from "@spt/generators/weapongen/IInventoryMagGen"; +import { InventoryMagGen } from "@spt/generators/weapongen/InventoryMagGen"; +import { BotWeaponGeneratorHelper } from "@spt/helpers/BotWeaponGeneratorHelper"; export declare class InternalMagazineInventoryMagGen implements IInventoryMagGen { protected botWeaponGeneratorHelper: BotWeaponGeneratorHelper; constructor(botWeaponGeneratorHelper: BotWeaponGeneratorHelper); diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/weapongen/implementations/UbglExternalMagGen.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/weapongen/implementations/UbglExternalMagGen.d.ts index 02b7748..69d0c49 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/weapongen/implementations/UbglExternalMagGen.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/weapongen/implementations/UbglExternalMagGen.d.ts @@ -1,6 +1,6 @@ -import { IInventoryMagGen } from "@spt-aki/generators/weapongen/IInventoryMagGen"; -import { InventoryMagGen } from "@spt-aki/generators/weapongen/InventoryMagGen"; -import { BotWeaponGeneratorHelper } from "@spt-aki/helpers/BotWeaponGeneratorHelper"; +import { IInventoryMagGen } from "@spt/generators/weapongen/IInventoryMagGen"; +import { InventoryMagGen } from "@spt/generators/weapongen/InventoryMagGen"; +import { BotWeaponGeneratorHelper } from "@spt/helpers/BotWeaponGeneratorHelper"; export declare class UbglExternalMagGen implements IInventoryMagGen { protected botWeaponGeneratorHelper: BotWeaponGeneratorHelper; constructor(botWeaponGeneratorHelper: BotWeaponGeneratorHelper); diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/AssortHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/AssortHelper.d.ts index 52dda35..72d1600 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/AssortHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/AssortHelper.d.ts @@ -1,11 +1,11 @@ -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { QuestHelper } from "@spt-aki/helpers/QuestHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { ITraderAssort } from "@spt-aki/models/eft/common/tables/ITrader"; -import { QuestStatus } from "@spt-aki/models/enums/QuestStatus"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { QuestHelper } from "@spt/helpers/QuestHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { ITraderAssort } from "@spt/models/eft/common/tables/ITrader"; +import { QuestStatus } from "@spt/models/enums/QuestStatus"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; export declare class AssortHelper { protected logger: ILogger; protected itemHelper: ItemHelper; @@ -14,7 +14,7 @@ export declare class AssortHelper { protected questHelper: QuestHelper; constructor(logger: ILogger, itemHelper: ItemHelper, databaseServer: DatabaseServer, localisationService: LocalisationService, questHelper: QuestHelper); /** - * Remove assorts from a trader that have not been unlocked yet (via player completing corrisponding quest) + * Remove assorts from a trader that have not been unlocked yet (via player completing corresponding quest) * @param pmcProfile Player profile * @param traderId Traders id the assort belongs to * @param traderAssorts All assort items from same trader diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/BotDifficultyHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/BotDifficultyHelper.d.ts index 84beba3..63572a5 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/BotDifficultyHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/BotDifficultyHelper.d.ts @@ -1,23 +1,44 @@ -import { BotHelper } from "@spt-aki/helpers/BotHelper"; -import { Difficulty } from "@spt-aki/models/eft/common/tables/IBotType"; -import { IPmcConfig } from "@spt-aki/models/spt/config/IPmcConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { BotHelper } from "@spt/helpers/BotHelper"; +import { Difficulty } from "@spt/models/eft/common/tables/IBotType"; +import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class BotDifficultyHelper { protected logger: ILogger; - protected jsonUtil: JsonUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected randomUtil: RandomUtil; protected localisationService: LocalisationService; protected botHelper: BotHelper; protected configServer: ConfigServer; + protected cloner: ICloner; protected pmcConfig: IPmcConfig; - constructor(logger: ILogger, jsonUtil: JsonUtil, databaseServer: DatabaseServer, randomUtil: RandomUtil, localisationService: LocalisationService, botHelper: BotHelper, configServer: ConfigServer); + constructor(logger: ILogger, databaseService: DatabaseService, randomUtil: RandomUtil, localisationService: LocalisationService, botHelper: BotHelper, configServer: ConfigServer, cloner: ICloner); + /** + * Get a difficulty object modified to handle fighting other PMCs + * @param pmcType 'bear or 'usec' + * @param difficulty easy / normal / hard / impossible + * @param usecType pmcUSEC + * @param bearType pmcBEAR + * @returns Difficulty object + */ getPmcDifficultySettings(pmcType: "bear" | "usec", difficulty: string, usecType: string, bearType: string): Difficulty; + /** + * Add bot types to ENEMY_BOT_TYPES array + * @param difficultySettings Bot settings to alter + * @param typesToAdd Bot types to add to enemy list + * @param typeBeingEdited Bot type to ignore and not add to enemy list + */ + protected addBotToEnemyList(difficultySettings: Difficulty, typesToAdd: string[], typeBeingEdited?: string): void; + /** + * Configure difficulty settings to be hostile to USEC and BEAR + * Look up value in bot.json/chanceSameSideIsHostilePercent + * @param difficultySettings pmc difficulty settings + */ + protected setDifficultyToHostileToBearAndUsec(difficultySettings: Difficulty): void; /** * Get difficulty settings for desired bot type, if not found use assault bot types * @param type bot type to retrieve difficulty of diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/BotGeneratorHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/BotGeneratorHelper.d.ts index e7f32ed..00ae8ae 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/BotGeneratorHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/BotGeneratorHelper.d.ts @@ -1,28 +1,34 @@ -import { ApplicationContext } from "@spt-aki/context/ApplicationContext"; -import { DurabilityLimitsHelper } from "@spt-aki/helpers/DurabilityLimitsHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { Item, Repairable, Upd } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { EquipmentFilters, IBotConfig, IRandomisedResourceValues } from "@spt-aki/models/spt/config/IBotConfig"; -import { IPmcConfig } from "@spt-aki/models/spt/config/IPmcConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { ContainerHelper } from "@spt/helpers/ContainerHelper"; +import { DurabilityLimitsHelper } from "@spt/helpers/DurabilityLimitsHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; +import { Item, Repairable, Upd } from "@spt/models/eft/common/tables/IItem"; +import { Grid, ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { ItemAddedResult } from "@spt/models/enums/ItemAddedResult"; +import { IChooseRandomCompatibleModResult } from "@spt/models/spt/bots/IChooseRandomCompatibleModResult"; +import { EquipmentFilters, IBotConfig, IRandomisedResourceValues } from "@spt/models/spt/config/IBotConfig"; +import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class BotGeneratorHelper { protected logger: ILogger; protected randomUtil: RandomUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected durabilityLimitsHelper: DurabilityLimitsHelper; protected itemHelper: ItemHelper; + protected inventoryHelper: InventoryHelper; + protected containerHelper: ContainerHelper; protected applicationContext: ApplicationContext; protected localisationService: LocalisationService; protected configServer: ConfigServer; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - constructor(logger: ILogger, randomUtil: RandomUtil, databaseServer: DatabaseServer, durabilityLimitsHelper: DurabilityLimitsHelper, itemHelper: ItemHelper, applicationContext: ApplicationContext, localisationService: LocalisationService, configServer: ConfigServer); + constructor(logger: ILogger, randomUtil: RandomUtil, databaseService: DatabaseService, durabilityLimitsHelper: DurabilityLimitsHelper, itemHelper: ItemHelper, inventoryHelper: InventoryHelper, containerHelper: ContainerHelper, applicationContext: ApplicationContext, localisationService: LocalisationService, configServer: ConfigServer); /** * Adds properties to an item * e.g. Repairable / HasHinge / Foldable / MaxDurability @@ -30,7 +36,7 @@ export declare class BotGeneratorHelper { * @param botRole Used by weapons to randomize the durability values. Null for non-equipped items * @returns Item Upd object with extra properties */ - generateExtraPropertiesForItem(itemTemplate: ITemplateItem, botRole?: any): { + generateExtraPropertiesForItem(itemTemplate: ITemplateItem, botRole?: string): { upd?: Upd; }; /** @@ -44,50 +50,54 @@ export declare class BotGeneratorHelper { * Get the chance for the weapon attachment or helmet equipment to be set as activated * @param botRole role of bot with weapon/helmet * @param setting the setting of the weapon attachment/helmet equipment to be activated - * @param defaultValue default value for the chance of activation if the botrole or bot equipment role is null + * @param defaultValue default value for the chance of activation if the botrole or bot equipment role is undefined * @returns Percent chance to be active */ - protected getBotEquipmentSettingFromConfig(botRole: string, setting: keyof EquipmentFilters, defaultValue: number): number; + protected getBotEquipmentSettingFromConfig(botRole: string | undefined, setting: keyof EquipmentFilters, defaultValue: number): number; /** * Create a repairable object for a weapon that containers durability + max durability properties * @param itemTemplate weapon object being generated for * @param botRole type of bot being generated for * @returns Repairable object */ - protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole: string): Repairable; + protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): Repairable; /** * Create a repairable object for an armor that containers durability + max durability properties * @param itemTemplate weapon object being generated for * @param botRole type of bot being generated for * @returns Repairable object */ - protected generateArmorRepairableProperties(itemTemplate: ITemplateItem, botRole: string): Repairable; + protected generateArmorRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): Repairable; + isWeaponModIncompatibleWithCurrentMods(itemsEquipped: Item[], tplToCheck: string, modSlot: string): IChooseRandomCompatibleModResult; /** * Can item be added to another item without conflict - * @param items Items to check compatibilities with + * @param itemsEquipped Items to check compatibilities with * @param tplToCheck Tpl of the item to check for incompatibilities * @param equipmentSlot Slot the item will be placed into * @returns false if no incompatibilities, also has incompatibility reason */ - isItemIncompatibleWithCurrentItems(items: Item[], tplToCheck: string, equipmentSlot: string): { - incompatible: boolean; - reason: string; - }; + isItemIncompatibleWithCurrentItems(itemsEquipped: Item[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; /** * Convert a bots role to the equipment role used in config/bot.json * @param botRole Role to convert * @returns Equipment role (e.g. pmc / assault / bossTagilla) */ getBotEquipmentRole(botRole: string): string; -} -/** TODO - move into own class */ -export declare class ExhaustableArray { - private itemPool; - private randomUtil; - private jsonUtil; - private pool; - constructor(itemPool: T[], randomUtil: RandomUtil, jsonUtil: JsonUtil); - getRandomValue(): T; - getFirstValue(): T; - hasValues(): boolean; + /** + * Adds an item with all its children into specified equipmentSlots, wherever it fits. + * @param equipmentSlots Slot to add item+children into + * @param rootItemId Root item id to use as mod items parentid + * @param rootItemTplId Root itms tpl id + * @param itemWithChildren Item to add + * @param inventory Inventory to add item+children into + * @returns ItemAddedResult result object + */ + addItemWithChildrenToEquipmentSlot(equipmentSlots: string[], rootItemId: string, rootItemTplId: string, itemWithChildren: Item[], inventory: Inventory, containersIdFull?: Set): ItemAddedResult; + /** + * Is the provided item allowed inside a container + * @param slotGrid Items sub-grid we want to place item inside + * @param itemTpl Item tpl being placed + * @returns True if allowed + */ + protected itemAllowedInContainer(slotGrid: Grid, itemTpl: string): boolean; } diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/BotHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/BotHelper.d.ts index 1026070..c5871ae 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/BotHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/BotHelper.d.ts @@ -1,35 +1,25 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; -import { Difficulty, IBotType } from "@spt-aki/models/eft/common/tables/IBotType"; -import { EquipmentFilters, IBotConfig, RandomisationDetails } from "@spt-aki/models/spt/config/IBotConfig"; -import { IPmcConfig } from "@spt-aki/models/spt/config/IPmcConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { MinMax } from "@spt/models/common/MinMax"; +import { Difficulty, IBotType } from "@spt/models/eft/common/tables/IBotType"; +import { EquipmentFilters, IBotConfig, RandomisationDetails } from "@spt/models/spt/config/IBotConfig"; +import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class BotHelper { protected logger: ILogger; - protected jsonUtil: JsonUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected randomUtil: RandomUtil; - protected localisationService: LocalisationService; protected configServer: ConfigServer; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - constructor(logger: ILogger, jsonUtil: JsonUtil, databaseServer: DatabaseServer, randomUtil: RandomUtil, localisationService: LocalisationService, configServer: ConfigServer); + constructor(logger: ILogger, databaseService: DatabaseService, randomUtil: RandomUtil, configServer: ConfigServer); /** * Get a template object for the specified botRole from bots.types db * @param role botRole to get template for * @returns IBotType object */ getBotTemplate(role: string): IBotType; - /** - * Randomize the chance the PMC will attack their own side - * Look up value in bot.json/chanceSameSideIsHostilePercent - * @param difficultySettings pmc difficulty settings - */ - randomizePmcHostility(difficultySettings: Difficulty): void; /** * Is the passed in bot role a PMC (usec/bear/pmc) * @param botRole bot role to check @@ -44,12 +34,6 @@ export declare class BotHelper { * @param typeToAdd bot type to add to friendly list */ addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void; - /** - * Add a bot to the ENEMY_BOT_TYPES array, do not add itself if its on the enemy list - * @param difficultySettings bot settings to alter - * @param typesToAdd bot type to add to enemy list - */ - addBotToEnemyList(difficultySettings: Difficulty, typesToAdd: string[], typeBeingEdited: string): void; /** * Add a bot to the REVENGE_BOT_TYPES array * @param difficultySettings bot settings to alter @@ -63,6 +47,11 @@ export declare class BotHelper { */ shouldBotBePmc(botRole: string): boolean; rollChanceToBePmc(role: string, botConvertMinMax: MinMax): boolean; + /** + * is the provided role a PMC, case-agnostic + * @param botRole Role to check + * @returns True if role is PMC + */ botRoleIsPmc(botRole: string): boolean; /** * Get randomization settings for bot from config/bot.json @@ -70,14 +59,14 @@ export declare class BotHelper { * @param botEquipConfig bot equipment json * @returns RandomisationDetails */ - getBotRandomizationDetails(botLevel: number, botEquipConfig: EquipmentFilters): RandomisationDetails; + getBotRandomizationDetails(botLevel: number, botEquipConfig: EquipmentFilters): RandomisationDetails | undefined; /** - * Choose between sptBear and sptUsec at random based on the % defined in pmcConfig.isUsec + * Choose between pmcBEAR and pmcUSEC at random based on the % defined in pmcConfig.isUsec * @returns pmc role */ getRandomizedPmcRole(): string; /** - * Get the corresponding side when sptBear or sptUsec is passed in + * Get the corresponding side when pmcBEAR or pmcUSEC is passed in * @param botRole role to get side for * @returns side (usec/bear) */ @@ -87,4 +76,5 @@ export declare class BotHelper { * @returns pmc side as string */ protected getRandomizedPmcSide(): string; + getPmcNicknameOfMaxLength(userId: string, maxLength: number): string; } diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/BotWeaponGeneratorHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/BotWeaponGeneratorHelper.d.ts index 293abb1..5ab4e59 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/BotWeaponGeneratorHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/BotWeaponGeneratorHelper.d.ts @@ -1,29 +1,26 @@ -import { ContainerHelper } from "@spt-aki/helpers/ContainerHelper"; -import { InventoryHelper } from "@spt-aki/helpers/InventoryHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { WeightedRandomHelper } from "@spt-aki/helpers/WeightedRandomHelper"; -import { Inventory } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { GenerationData } from "@spt-aki/models/eft/common/tables/IBotType"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { Grid, ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { EquipmentSlots } from "@spt-aki/models/enums/EquipmentSlots"; -import { ItemAddedResult } from "@spt-aki/models/enums/ItemAddedResult"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { BotGeneratorHelper } from "@spt/helpers/BotGeneratorHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; +import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { EquipmentSlots } from "@spt/models/enums/EquipmentSlots"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class BotWeaponGeneratorHelper { protected logger: ILogger; protected databaseServer: DatabaseServer; protected itemHelper: ItemHelper; protected randomUtil: RandomUtil; protected hashUtil: HashUtil; - protected inventoryHelper: InventoryHelper; protected weightedRandomHelper: WeightedRandomHelper; + protected botGeneratorHelper: BotGeneratorHelper; protected localisationService: LocalisationService; - protected containerHelper: ContainerHelper; - constructor(logger: ILogger, databaseServer: DatabaseServer, itemHelper: ItemHelper, randomUtil: RandomUtil, hashUtil: HashUtil, inventoryHelper: InventoryHelper, weightedRandomHelper: WeightedRandomHelper, localisationService: LocalisationService, containerHelper: ContainerHelper); + constructor(logger: ILogger, databaseServer: DatabaseServer, itemHelper: ItemHelper, randomUtil: RandomUtil, hashUtil: HashUtil, weightedRandomHelper: WeightedRandomHelper, botGeneratorHelper: BotGeneratorHelper, localisationService: LocalisationService); /** * Get a randomized number of bullets for a specific magazine * @param magCounts Weights of magazines @@ -65,22 +62,4 @@ export declare class BotWeaponGeneratorHelper { * @returns tpl of magazine */ getWeaponsDefaultMagazineTpl(weaponTemplate: ITemplateItem): string; - /** - * TODO - move into BotGeneratorHelper, this is not the class for it - * Adds an item with all its children into specified equipmentSlots, wherever it fits. - * @param equipmentSlots Slot to add item+children into - * @param parentId - * @param parentTpl - * @param itemWithChildren Item to add - * @param inventory Inventory to add item+children into - * @returns a `boolean` indicating item was added - */ - addItemWithChildrenToEquipmentSlot(equipmentSlots: string[], parentId: string, parentTpl: string, itemWithChildren: Item[], inventory: Inventory): ItemAddedResult; - /** - * Is the provided item allowed inside a container - * @param slotGrid Items sub-grid we want to place item inside - * @param itemTpl Item tpl being placed - * @returns True if allowed - */ - protected itemAllowedInContainer(slotGrid: Grid, itemTpl: string): boolean; } diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/ContainerHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/ContainerHelper.d.ts index 125fbcb..730f20f 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/ContainerHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/ContainerHelper.d.ts @@ -1,9 +1,9 @@ export declare class FindSlotResult { success: boolean; - x: any; - y: any; + x?: number; + y?: number; rotation: boolean; - constructor(success?: boolean, x?: any, y?: any, rotation?: boolean); + constructor(success?: boolean, x?: number, y?: number, rotation?: boolean); } export declare class ContainerHelper { /** @@ -28,13 +28,12 @@ export declare class ContainerHelper { protected locateSlot(container2D: number[][], containerX: number, containerY: number, x: number, y: number, itemW: number, itemH: number): boolean; /** * Find a free slot for an item to be placed at - * @param container2D Container to palce item in + * @param container2D Container to place item in * @param x Container x size * @param y Container y size * @param itemW Items width * @param itemH Items height * @param rotate is item rotated - * @returns Location to place item */ - fillContainerMapWithItem(container2D: number[][], x: number, y: number, itemW: number, itemH: number, rotate: boolean): number[][]; + fillContainerMapWithItem(container2D: number[][], x: number, y: number, itemW: number, itemH: number, rotate: boolean): void; } diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/AbstractDialogueChatBot.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/AbstractDialogueChatBot.d.ts index 8034dc1..26bc935 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/AbstractDialogueChatBot.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/AbstractDialogueChatBot.d.ts @@ -1,19 +1,15 @@ -import { IChatCommand, ICommandoCommand } from "@spt-aki/helpers/Dialogue/Commando/IChatCommand"; -import { IDialogueChatBot } from "@spt-aki/helpers/Dialogue/IDialogueChatBot"; -import { ISendMessageRequest } from "@spt-aki/models/eft/dialog/ISendMessageRequest"; -import { IUserDialogInfo } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { MailSendService } from "@spt-aki/services/MailSendService"; +import { IChatCommand } from "@spt/helpers/Dialogue/Commando/IChatCommand"; +import { IDialogueChatBot } from "@spt/helpers/Dialogue/IDialogueChatBot"; +import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; +import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { MailSendService } from "@spt/services/MailSendService"; export declare abstract class AbstractDialogueChatBot implements IDialogueChatBot { protected logger: ILogger; protected mailSendService: MailSendService; - protected chatCommands: IChatCommand[] | ICommandoCommand[]; - constructor(logger: ILogger, mailSendService: MailSendService, chatCommands: IChatCommand[] | ICommandoCommand[]); - /** - * @deprecated use registerChatCommand instead - */ - registerCommandoCommand(chatCommand: IChatCommand | ICommandoCommand): void; - registerChatCommand(chatCommand: IChatCommand | ICommandoCommand): void; + protected chatCommands: IChatCommand[]; + constructor(logger: ILogger, mailSendService: MailSendService, chatCommands: IChatCommand[]); + registerChatCommand(chatCommand: IChatCommand): void; abstract getChatBot(): IUserDialogInfo; protected abstract getUnrecognizedCommandMessage(): string; handleMessage(sessionId: string, request: ISendMessageRequest): string; diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/Commando/IChatCommand.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/Commando/IChatCommand.d.ts index 247aea7..dd53977 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/Commando/IChatCommand.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/Commando/IChatCommand.d.ts @@ -1,9 +1,5 @@ -import { ISendMessageRequest } from "@spt-aki/models/eft/dialog/ISendMessageRequest"; -import { IUserDialogInfo } from "@spt-aki/models/eft/profile/IAkiProfile"; -/** - * @deprecated Use IChatCommand instead - */ -export type ICommandoCommand = IChatCommand; +import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; +import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; export interface IChatCommand { getCommandPrefix(): string; getCommandHelp(command: string): string; diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/Commando/SptCommandoCommands.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/Commando/SptCommandoCommands.d.ts index 8626984..ab02e4f 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/Commando/SptCommandoCommands.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/Commando/SptCommandoCommands.d.ts @@ -1,12 +1,14 @@ -import { IChatCommand } from "@spt-aki/helpers/Dialogue/Commando/IChatCommand"; -import { ISptCommand } from "@spt-aki/helpers/Dialogue/Commando/SptCommands/ISptCommand"; -import { ISendMessageRequest } from "@spt-aki/models/eft/dialog/ISendMessageRequest"; -import { IUserDialogInfo } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; +import { IChatCommand } from "@spt/helpers/Dialogue/Commando/IChatCommand"; +import { ISptCommand } from "@spt/helpers/Dialogue/Commando/SptCommands/ISptCommand"; +import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; +import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; export declare class SptCommandoCommands implements IChatCommand { protected configServer: ConfigServer; + protected localisationService: LocalisationService; protected sptCommands: ISptCommand[]; - constructor(configServer: ConfigServer, sptCommands: ISptCommand[]); + constructor(configServer: ConfigServer, localisationService: LocalisationService, sptCommands: ISptCommand[]); registerSptCommandoCommand(command: ISptCommand): void; getCommandHelp(command: string): string; getCommandPrefix(): string; diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/Commando/SptCommands/GiveCommand/GiveSptCommand.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/Commando/SptCommands/GiveCommand/GiveSptCommand.d.ts new file mode 100644 index 0000000..c51bf7e --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/Commando/SptCommands/GiveCommand/GiveSptCommand.d.ts @@ -0,0 +1,47 @@ +import { SavedCommand } from "@spt/helpers/Dialogue/Commando/SptCommands/GiveCommand/SavedCommand"; +import { ISptCommand } from "@spt/helpers/Dialogue/Commando/SptCommands/ISptCommand"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; +import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { ItemFilterService } from "@spt/services/ItemFilterService"; +import { LocaleService } from "@spt/services/LocaleService"; +import { MailSendService } from "@spt/services/MailSendService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +export declare class GiveSptCommand implements ISptCommand { + protected logger: ILogger; + protected itemHelper: ItemHelper; + protected hashUtil: HashUtil; + protected presetHelper: PresetHelper; + protected mailSendService: MailSendService; + protected localeService: LocaleService; + protected databaseService: DatabaseService; + protected itemFilterService: ItemFilterService; + protected cloner: ICloner; + /** + * Regex to account for all these cases: + * spt give "item name" 5 + * spt give templateId 5 + * spt give en "item name in english" 5 + * spt give es "nombre en español" 5 + * spt give 5 <== this is the reply when the algo isn't sure about an item + */ + private static commandRegex; + private static acceptableConfidence; + private static excludedPresetItems; + protected savedCommand: Map; + constructor(logger: ILogger, itemHelper: ItemHelper, hashUtil: HashUtil, presetHelper: PresetHelper, mailSendService: MailSendService, localeService: LocaleService, databaseService: DatabaseService, itemFilterService: ItemFilterService, cloner: ICloner); + getCommand(): string; + getCommandHelp(): string; + performAction(commandHandler: IUserDialogInfo, sessionId: string, request: ISendMessageRequest): string; + /** + * A "simple" function that checks if an item is supposed to be given to a player or not + * @param templateItem the template item to check + * @returns true if its obtainable, false if its not + */ + protected isItemAllowed(templateItem: ITemplateItem): boolean; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/Commando/SptCommands/SavedCommand.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/Commando/SptCommands/GiveCommand/SavedCommand.d.ts similarity index 100% rename from TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/Commando/SptCommands/SavedCommand.d.ts rename to TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/Commando/SptCommands/GiveCommand/SavedCommand.d.ts diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/Commando/SptCommands/GiveSptCommand.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/Commando/SptCommands/GiveSptCommand.d.ts deleted file mode 100644 index e7925bb..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/Commando/SptCommands/GiveSptCommand.d.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { ISptCommand } from "@spt-aki/helpers/Dialogue/Commando/SptCommands/ISptCommand"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PresetHelper } from "@spt-aki/helpers/PresetHelper"; -import { ISendMessageRequest } from "@spt-aki/models/eft/dialog/ISendMessageRequest"; -import { IUserDialogInfo } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { MailSendService } from "@spt-aki/services/MailSendService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { LocaleService } from "@spt-aki/services/LocaleService"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SavedCommand } from "@spt-aki/helpers/Dialogue/Commando/SptCommands/SavedCommand"; -export declare class GiveSptCommand implements ISptCommand { - protected logger: ILogger; - protected itemHelper: ItemHelper; - protected hashUtil: HashUtil; - protected jsonUtil: JsonUtil; - protected presetHelper: PresetHelper; - protected mailSendService: MailSendService; - protected localeService: LocaleService; - protected databaseServer: DatabaseServer; - /** - * Regex to account for all these cases: - * spt give "item name" 5 - * spt give templateId 5 - * spt give en "item name in english" 5 - * spt give es "nombre en español" 5 - * spt give 5 <== this is the reply when the algo isnt sure about an item - */ - private static commandRegex; - private static maxAllowedDistance; - protected savedCommand: SavedCommand; - constructor(logger: ILogger, itemHelper: ItemHelper, hashUtil: HashUtil, jsonUtil: JsonUtil, presetHelper: PresetHelper, mailSendService: MailSendService, localeService: LocaleService, databaseServer: DatabaseServer); - getCommand(): string; - getCommandHelp(): string; - performAction(commandHandler: IUserDialogInfo, sessionId: string, request: ISendMessageRequest): string; -} diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/Commando/SptCommands/ISptCommand.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/Commando/SptCommands/ISptCommand.d.ts index 33732c7..3c55b8e 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/Commando/SptCommands/ISptCommand.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/Commando/SptCommands/ISptCommand.d.ts @@ -1,5 +1,5 @@ -import { ISendMessageRequest } from "@spt-aki/models/eft/dialog/ISendMessageRequest"; -import { IUserDialogInfo } from "@spt-aki/models/eft/profile/IAkiProfile"; +import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; +import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; export interface ISptCommand { getCommand(): string; getCommandHelp(): string; diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/Commando/SptCommands/ProfileCommand/ProfileSptCommand.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/Commando/SptCommands/ProfileCommand/ProfileSptCommand.d.ts new file mode 100644 index 0000000..7d3547a --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/Commando/SptCommands/ProfileCommand/ProfileSptCommand.d.ts @@ -0,0 +1,36 @@ +import { SavedCommand } from "@spt/helpers/Dialogue/Commando/SptCommands/GiveCommand/SavedCommand"; +import { ISptCommand } from "@spt/helpers/Dialogue/Commando/SptCommands/ISptCommand"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; +import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; +import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { LocaleService } from "@spt/services/LocaleService"; +import { MailSendService } from "@spt/services/MailSendService"; +import { HashUtil } from "@spt/utils/HashUtil"; +export declare class ProfileSptCommand implements ISptCommand { + protected logger: ILogger; + protected itemHelper: ItemHelper; + protected hashUtil: HashUtil; + protected presetHelper: PresetHelper; + protected mailSendService: MailSendService; + protected localeService: LocaleService; + protected databaseServer: DatabaseServer; + protected profileHelper: ProfileHelper; + /** + * Regex to account for all these cases: + * spt profile level 20 + * spt profile skill metabolism 10 + */ + private static commandRegex; + protected savedCommand: SavedCommand; + constructor(logger: ILogger, itemHelper: ItemHelper, hashUtil: HashUtil, presetHelper: PresetHelper, mailSendService: MailSendService, localeService: LocaleService, databaseServer: DatabaseServer, profileHelper: ProfileHelper); + getCommand(): string; + getCommandHelp(): string; + performAction(commandHandler: IUserDialogInfo, sessionId: string, request: ISendMessageRequest): string; + protected handleSkillCommand(skill: string, level: number): IProfileChangeEvent; + protected handleLevelCommand(level: number): IProfileChangeEvent; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/Commando/SptCommands/TraderCommand/TraderSptCommand.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/Commando/SptCommands/TraderCommand/TraderSptCommand.d.ts new file mode 100644 index 0000000..247f908 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/Commando/SptCommands/TraderCommand/TraderSptCommand.d.ts @@ -0,0 +1,31 @@ +import { SavedCommand } from "@spt/helpers/Dialogue/Commando/SptCommands/GiveCommand/SavedCommand"; +import { ISptCommand } from "@spt/helpers/Dialogue/Commando/SptCommands/ISptCommand"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; +import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocaleService } from "@spt/services/LocaleService"; +import { MailSendService } from "@spt/services/MailSendService"; +import { HashUtil } from "@spt/utils/HashUtil"; +export declare class TraderSptCommand implements ISptCommand { + protected logger: ILogger; + protected itemHelper: ItemHelper; + protected hashUtil: HashUtil; + protected presetHelper: PresetHelper; + protected mailSendService: MailSendService; + protected localeService: LocaleService; + protected databaseService: DatabaseService; + /** + * Regex to account for all these cases: + * spt trader prapor rep 100 + * spt trader mechanic spend 1000000 + */ + private static commandRegex; + protected savedCommand: SavedCommand; + constructor(logger: ILogger, itemHelper: ItemHelper, hashUtil: HashUtil, presetHelper: PresetHelper, mailSendService: MailSendService, localeService: LocaleService, databaseService: DatabaseService); + getCommand(): string; + getCommandHelp(): string; + performAction(commandHandler: IUserDialogInfo, sessionId: string, request: ISendMessageRequest): string; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/CommandoDialogueChatBot.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/CommandoDialogueChatBot.d.ts index 391969f..a87bec1 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/CommandoDialogueChatBot.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/CommandoDialogueChatBot.d.ts @@ -1,8 +1,8 @@ -import { IChatCommand } from "@spt-aki/helpers/Dialogue/Commando/IChatCommand"; -import { IUserDialogInfo } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { MailSendService } from "@spt-aki/services/MailSendService"; -import { AbstractDialogueChatBot } from "@spt-aki/helpers/Dialogue/AbstractDialogueChatBot"; +import { AbstractDialogueChatBot } from "@spt/helpers/Dialogue/AbstractDialogueChatBot"; +import { IChatCommand } from "@spt/helpers/Dialogue/Commando/IChatCommand"; +import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { MailSendService } from "@spt/services/MailSendService"; export declare class CommandoDialogueChatBot extends AbstractDialogueChatBot { constructor(logger: ILogger, mailSendService: MailSendService, chatCommands: IChatCommand[]); getChatBot(): IUserDialogInfo; diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/IDialogueChatBot.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/IDialogueChatBot.d.ts index b585d55..0c72041 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/IDialogueChatBot.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/IDialogueChatBot.d.ts @@ -1,5 +1,5 @@ -import { ISendMessageRequest } from "@spt-aki/models/eft/dialog/ISendMessageRequest"; -import { IUserDialogInfo } from "@spt-aki/models/eft/profile/IAkiProfile"; +import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; +import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; export interface IDialogueChatBot { getChatBot(): IUserDialogInfo; handleMessage(sessionId: string, request: ISendMessageRequest): string; diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/SptDialogueChatBot.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/SptDialogueChatBot.d.ts index a852dfe..8d3aa97 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/SptDialogueChatBot.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/Dialogue/SptDialogueChatBot.d.ts @@ -1,12 +1,13 @@ -import { IDialogueChatBot } from "@spt-aki/helpers/Dialogue/IDialogueChatBot"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { ISendMessageRequest } from "@spt-aki/models/eft/dialog/ISendMessageRequest"; -import { IUserDialogInfo } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { ICoreConfig } from "@spt-aki/models/spt/config/ICoreConfig"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { GiftService } from "@spt-aki/services/GiftService"; -import { MailSendService } from "@spt-aki/services/MailSendService"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { IDialogueChatBot } from "@spt/helpers/Dialogue/IDialogueChatBot"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; +import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; +import { ICoreConfig } from "@spt/models/spt/config/ICoreConfig"; +import { IWeatherConfig } from "@spt/models/spt/config/IWeatherConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { GiftService } from "@spt/services/GiftService"; +import { MailSendService } from "@spt/services/MailSendService"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class SptDialogueChatBot implements IDialogueChatBot { protected profileHelper: ProfileHelper; protected randomUtil: RandomUtil; @@ -14,6 +15,7 @@ export declare class SptDialogueChatBot implements IDialogueChatBot { protected giftService: GiftService; protected configServer: ConfigServer; protected coreConfig: ICoreConfig; + protected weatherConfig: IWeatherConfig; constructor(profileHelper: ProfileHelper, randomUtil: RandomUtil, mailSendService: MailSendService, giftService: GiftService, configServer: ConfigServer); getChatBot(): IUserDialogInfo; /** diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/DialogueHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/DialogueHelper.d.ts index ea1b517..febe696 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/DialogueHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/DialogueHelper.d.ts @@ -1,14 +1,13 @@ -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { NotificationSendHelper } from "@spt-aki/helpers/NotificationSendHelper"; -import { NotifierHelper } from "@spt-aki/helpers/NotifierHelper"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { Dialogue, MessageContent, MessagePreview } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { MessageType } from "@spt-aki/models/enums/MessageType"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { NotificationSendHelper } from "@spt/helpers/NotificationSendHelper"; +import { NotifierHelper } from "@spt/helpers/NotifierHelper"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { Dialogue, MessagePreview } from "@spt/models/eft/profile/ISptProfile"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { HashUtil } from "@spt/utils/HashUtil"; export declare class DialogueHelper { protected logger: ILogger; protected hashUtil: HashUtil; @@ -19,14 +18,6 @@ export declare class DialogueHelper { protected localisationService: LocalisationService; protected itemHelper: ItemHelper; constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, databaseServer: DatabaseServer, notifierHelper: NotifierHelper, notificationSendHelper: NotificationSendHelper, localisationService: LocalisationService, itemHelper: ItemHelper); - /** - * @deprecated Use MailSendService.sendMessage() or helpers - */ - createMessageContext(templateId: string, messageType: MessageType, maxStoreTime?: any): MessageContent; - /** - * @deprecated Use MailSendService.sendMessage() or helpers - */ - addDialogueMessage(dialogueID: string, messageContent: MessageContent, sessionID: string, rewards?: Item[], messageType?: MessageType): void; /** * Get the preview contents of the last message in a dialogue. * @param dialogue diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/DurabilityLimitsHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/DurabilityLimitsHelper.d.ts index efccdf5..e3b4086 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/DurabilityLimitsHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/DurabilityLimitsHelper.d.ts @@ -1,8 +1,8 @@ -import { BotHelper } from "@spt-aki/helpers/BotHelper"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { IBotConfig } from "@spt-aki/models/spt/config/IBotConfig"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { BotHelper } from "@spt/helpers/BotHelper"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class DurabilityLimitsHelper { protected randomUtil: RandomUtil; protected botHelper: BotHelper; @@ -15,14 +15,14 @@ export declare class DurabilityLimitsHelper { * @param botRole Role of bot to get max durability for * @returns Max durability of weapon */ - getRandomizedMaxWeaponDurability(itemTemplate: ITemplateItem, botRole: string): number; + getRandomizedMaxWeaponDurability(itemTemplate: ITemplateItem, botRole?: string): number; /** * Get max durability value for armor based on bot role * @param itemTemplate Item to get max durability for * @param botRole Role of bot to get max durability for * @returns max durability */ - getRandomizedMaxArmorDurability(itemTemplate: ITemplateItem, botRole: string): number; + getRandomizedMaxArmorDurability(itemTemplate: ITemplateItem, botRole?: string): number; /** * Get randomised current weapon durability by bot role * @param itemTemplate Unused - Item to get current durability of @@ -30,7 +30,7 @@ export declare class DurabilityLimitsHelper { * @param maxDurability Max durability of weapon * @returns Current weapon durability */ - getRandomizedWeaponDurability(itemTemplate: ITemplateItem, botRole: string, maxDurability: number): number; + getRandomizedWeaponDurability(itemTemplate: ITemplateItem, botRole: string | undefined, maxDurability: number): number; /** * Get randomised current armor durability by bot role * @param itemTemplate Unused - Item to get current durability of @@ -38,17 +38,17 @@ export declare class DurabilityLimitsHelper { * @param maxDurability Max durability of armor * @returns Current armor durability */ - getRandomizedArmorDurability(itemTemplate: ITemplateItem, botRole: string, maxDurability: number): number; - protected generateMaxWeaponDurability(botRole: string): number; + getRandomizedArmorDurability(itemTemplate: ITemplateItem, botRole: string | undefined, maxDurability: number): number; + protected generateMaxWeaponDurability(botRole?: string): number; protected generateMaxPmcArmorDurability(itemMaxDurability: number): number; - protected getLowestMaxWeaponFromConfig(botRole: string): number; - protected getHighestMaxWeaponDurabilityFromConfig(botRole: string): number; - protected generateWeaponDurability(botRole: string, maxDurability: number): number; - protected generateArmorDurability(botRole: string, maxDurability: number): number; - protected getMinWeaponDeltaFromConfig(botRole: string): number; - protected getMaxWeaponDeltaFromConfig(botRole: string): number; - protected getMinArmorDeltaFromConfig(botRole: string): number; - protected getMaxArmorDeltaFromConfig(botRole: string): number; - protected getMinArmorLimitPercentFromConfig(botRole: string): number; - protected getMinWeaponLimitPercentFromConfig(botRole: string): number; + protected getLowestMaxWeaponFromConfig(botRole?: string): number; + protected getHighestMaxWeaponDurabilityFromConfig(botRole?: string): number; + protected generateWeaponDurability(botRole: string | undefined, maxDurability: number): number; + protected generateArmorDurability(botRole: string | undefined, maxDurability: number): number; + protected getMinWeaponDeltaFromConfig(botRole?: string): number; + protected getMaxWeaponDeltaFromConfig(botRole?: string): number; + protected getMinArmorDeltaFromConfig(botRole?: string): number; + protected getMaxArmorDeltaFromConfig(botRole?: string): number; + protected getMinArmorLimitPercentFromConfig(botRole?: string): number; + protected getMinWeaponLimitPercentFromConfig(botRole?: string): number; } diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/GameEventHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/GameEventHelper.d.ts index 555cda2..b15a15d 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/GameEventHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/GameEventHelper.d.ts @@ -1,6 +1,6 @@ -import { ISeasonalEventConfig } from "@spt-aki/models/spt/config/ISeasonalEventConfig"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; +import { ISeasonalEventConfig } from "@spt/models/spt/config/ISeasonalEventConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; export declare class GameEventHelper { protected databaseServer: DatabaseServer; protected configServer: ConfigServer; diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/HandbookHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/HandbookHelper.d.ts index 1e7dffa..0ed965e 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/HandbookHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/HandbookHelper.d.ts @@ -1,6 +1,9 @@ -import { Category } from "@spt-aki/models/eft/common/tables/IHandbookBase"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; +import { Category } from "@spt/models/eft/common/tables/IHandbookBase"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItemConfig } from "@spt/models/spt/config/IItemConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; declare class LookupItem { readonly byId: Map; readonly byParent: Map; @@ -12,22 +15,25 @@ export declare class LookupCollection { constructor(); } export declare class HandbookHelper { - protected databaseServer: DatabaseServer; - protected jsonUtil: JsonUtil; + protected databaseService: DatabaseService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected itemConfig: IItemConfig; protected lookupCacheGenerated: boolean; protected handbookPriceCache: LookupCollection; - constructor(databaseServer: DatabaseServer, jsonUtil: JsonUtil); + constructor(databaseService: DatabaseService, configServer: ConfigServer, cloner: ICloner); /** * Create an in-memory cache of all items with associated handbook price in handbookPriceCache class */ hydrateLookup(): void; /** * Get price from internal cache, if cache empty look up price directly in handbook (expensive) - * If no values found, return 1 - * @param tpl item tpl to look up price for + * If no values found, return 0 + * @param tpl Item tpl to look up price for * @returns price in roubles */ getTemplatePrice(tpl: string): number; + getTemplatePriceForItems(items: Item[]): number; /** * Get all items in template with the given parent category * @param parentId diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/HealthHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/HealthHelper.d.ts index 6aae71f..650f633 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/HealthHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/HealthHelper.d.ts @@ -1,33 +1,33 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { ISyncHealthRequestData } from "@spt-aki/models/eft/health/ISyncHealthRequestData"; -import { Effects, IAkiProfile } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { IHealthConfig } from "@spt-aki/models/spt/config/IHealthConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { ISyncHealthRequestData } from "@spt/models/eft/health/ISyncHealthRequestData"; +import { Effects, ISptProfile } from "@spt/models/eft/profile/ISptProfile"; +import { IHealthConfig } from "@spt/models/spt/config/IHealthConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class HealthHelper { - protected jsonUtil: JsonUtil; protected logger: ILogger; protected timeUtil: TimeUtil; protected saveServer: SaveServer; protected configServer: ConfigServer; + protected cloner: ICloner; protected healthConfig: IHealthConfig; - constructor(jsonUtil: JsonUtil, logger: ILogger, timeUtil: TimeUtil, saveServer: SaveServer, configServer: ConfigServer); + constructor(logger: ILogger, timeUtil: TimeUtil, saveServer: SaveServer, configServer: ConfigServer, cloner: ICloner); /** * Resets the profiles vitality/health and vitality/effects properties to their defaults * @param sessionID Session Id * @returns updated profile */ - resetVitality(sessionID: string): IAkiProfile; + resetVitality(sessionID: string): ISptProfile; /** - * Update player profile with changes from request object + * Update player profile vitality values with changes from client request object * @param pmcData Player profile * @param request Heal request * @param sessionID Session id - * @param addEffects Should effects be added or removed (default - add) - * @param deleteExistingEffects Should all prior effects be removed before apply new ones + * @param addEffects Should effects be added to profile (default - true) + * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true) */ saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void; /** diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/HideoutHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/HideoutHelper.d.ts index 0cfc649..c4aaa4c 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/HideoutHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/HideoutHelper.d.ts @@ -1,44 +1,47 @@ -import { InventoryHelper } from "@spt-aki/helpers/InventoryHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { HideoutArea, IHideoutImprovement, Production, Productive } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { Upd } from "@spt-aki/models/eft/common/tables/IItem"; -import { StageBonus } from "@spt-aki/models/eft/hideout/IHideoutArea"; -import { IHideoutContinuousProductionStartRequestData } from "@spt-aki/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; -import { IHideoutProduction } from "@spt-aki/models/eft/hideout/IHideoutProduction"; -import { IHideoutSingleProductionStartRequestData } from "@spt-aki/models/eft/hideout/IHideoutSingleProductionStartRequestData"; -import { IHideoutTakeProductionRequestData } from "@spt-aki/models/eft/hideout/IHideoutTakeProductionRequestData"; -import { IAddItemRequestData } from "@spt-aki/models/eft/inventory/IAddItemRequestData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IHideoutConfig } from "@spt-aki/models/spt/config/IHideoutConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { PlayerService } from "@spt-aki/services/PlayerService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { HideoutArea, IHideoutImprovement, Production, Productive } from "@spt/models/eft/common/tables/IBotBase"; +import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { StageBonus } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutSingleProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutSingleProductionStartRequestData"; +import { IHideoutTakeProductionRequestData } from "@spt/models/eft/hideout/IHideoutTakeProductionRequestData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { SkillTypes } from "@spt/models/enums/SkillTypes"; +import { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { PlayerService } from "@spt/services/PlayerService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class HideoutHelper { protected logger: ILogger; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected eventOutputHolder: EventOutputHolder; protected httpResponse: HttpResponseUtil; protected profileHelper: ProfileHelper; protected inventoryHelper: InventoryHelper; protected playerService: PlayerService; protected localisationService: LocalisationService; + protected itemHelper: ItemHelper; protected configServer: ConfigServer; + protected cloner: ICloner; static bitcoinFarm: string; + static bitcoinProductionId: string; static waterCollector: string; - static bitcoin: string; - static expeditionaryFuelTank: string; static maxSkillPoint: number; protected hideoutConfig: IHideoutConfig; - constructor(logger: ILogger, hashUtil: HashUtil, timeUtil: TimeUtil, databaseServer: DatabaseServer, eventOutputHolder: EventOutputHolder, httpResponse: HttpResponseUtil, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, playerService: PlayerService, localisationService: LocalisationService, configServer: ConfigServer); + constructor(logger: ILogger, hashUtil: HashUtil, timeUtil: TimeUtil, databaseService: DatabaseService, eventOutputHolder: EventOutputHolder, httpResponse: HttpResponseUtil, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, playerService: PlayerService, localisationService: LocalisationService, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner); /** * Add production to profiles' Hideout.Production array * @param pmcData Profile to add production to @@ -80,6 +83,16 @@ export declare class HideoutHelper { waterCollectorHasFilter: boolean; }; protected doesWaterCollectorHaveFilter(waterCollector: HideoutArea): boolean; + /** + * Iterate over productions and update their progress timers + * @param pmcData Profile to check for productions and update + * @param hideoutProperties Hideout properties + */ + protected updateProductionTimers(pmcData: IPmcData, hideoutProperties: { + btcFarmCGs: number; + isGeneratorOn: boolean; + waterCollectorHasFilter: boolean; + }): void; /** * Update progress timer for water collector * @param pmcData profile to update @@ -91,16 +104,6 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter: boolean; }): void; - /** - * Iterate over productions and update their progress timers - * @param pmcData Profile to check for productions and update - * @param hideoutProperties Hideout properties - */ - protected updateProductionTimers(pmcData: IPmcData, hideoutProperties: { - btcFarmCGs: number; - isGeneratorOn: boolean; - waterCollectorHasFilter: boolean; - }): void; /** * Update a productions progress value based on the amount of time that has passed * @param pmcData Player profile @@ -138,17 +141,34 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter: boolean; }): void; - protected updateFuel(generatorArea: HideoutArea, pmcData: IPmcData): void; - protected updateWaterCollector(sessionId: string, pmcData: IPmcData, area: HideoutArea, isGeneratorOn: boolean): void; + /** + * Decrease fuel from generator slots based on amount of time since last time this occured + * @param generatorArea Hideout area + * @param pmcData Player profile + * @param isGeneratorOn Is the generator turned on since last update + */ + protected updateFuel(generatorArea: HideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateWaterCollector(sessionId: string, pmcData: IPmcData, area: HideoutArea, hideoutProperties: { + btcFarmCGs: number; + isGeneratorOn: boolean; + waterCollectorHasFilter: boolean; + }): void; + /** + * Get craft time and make adjustments to account for dev profile + crafting skill level + * @param pmcData Player profile making craft + * @param recipeId Recipe being crafted + * @param applyHideoutManagementBonus should the hideout mgmt bonus be appled to the calculation + * @returns Items craft time with bonuses subtracted + */ + getAdjustedCraftTimeWithSkills(pmcData: IPmcData, recipeId: string, applyHideoutManagementBonus?: boolean): number; /** * Adjust water filter objects resourceValue or delete when they reach 0 resource * @param waterFilterArea water filter area to update * @param production production object * @param isGeneratorOn is generator enabled * @param pmcData Player profile - * @returns Updated HideoutArea object */ - protected updateWaterFilters(waterFilterArea: HideoutArea, production: Production, isGeneratorOn: boolean, pmcData: IPmcData): HideoutArea; + protected updateWaterFilters(waterFilterArea: HideoutArea, production: Production, isGeneratorOn: boolean, pmcData: IPmcData): void; /** * 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 @@ -156,9 +176,9 @@ export declare class HideoutHelper { * @param totalProductionTime Total time collecting water * @param productionProgress how far water collector has progressed * @param baseFilterDrainRate Base drain rate - * @returns + * @returns drain rate (adjusted) */ - protected adjustWaterFilterDrainRate(secondsSinceServerTick: number, totalProductionTime: number, productionProgress: number, baseFilterDrainRate: number): number; + protected getTimeAdjustedWaterFilterDrainRate(secondsSinceServerTick: number, totalProductionTime: number, productionProgress: number, baseFilterDrainRate: number): number; /** * Get the water filter drain rate based on hideout bonues player has * @param pmcData Player profile @@ -178,9 +198,9 @@ export declare class HideoutHelper { * @param resourceUnitsConsumed * @returns Upd */ - protected getAreaUpdObject(stackCount: number, resourceValue: number, resourceUnitsConsumed: number): Upd; - protected updateAirFilters(airFilterArea: HideoutArea, pmcData: IPmcData): void; - protected updateBitcoinFarm(pmcData: IPmcData, btcFarmCGs: number, isGeneratorOn: boolean): Production; + protected getAreaUpdObject(stackCount: number, resourceValue: number, resourceUnitsConsumed: number, isFoundInRaid: boolean): Upd; + protected updateAirFilters(airFilterArea: HideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateBitcoinFarm(pmcData: IPmcData, btcFarmCGs: number, isGeneratorOn: boolean): Production | undefined; /** * Add bitcoin object to btc production products array and set progress time * @param btcProd Bitcoin production object @@ -196,15 +216,15 @@ export declare class HideoutHelper { */ protected getTimeElapsedSinceLastServerTick(pmcData: IPmcData, isGeneratorOn: boolean, recipe?: IHideoutProduction): number; /** - * Get a count of how many BTC can be gathered by the profile + * Get a count of how many possible BTC can be gathered by the profile * @param pmcData Profile to look up - * @returns coin slot count + * @returns Coin slot count */ protected getBTCSlots(pmcData: IPmcData): number; /** - * Get a count of bitcoins player miner can hold + * Get a count of how many additional bitcoins player hideout can hold with elite skill */ - protected getBitcoinMinerContainerSlotSize(): number; + protected getEliteSkillAdditionalBitcoinSlotCount(): number; /** * HideoutManagement skill gives a consumption bonus the higher the level * 0.5% per level per 1-51, (25.5% at max) @@ -213,12 +233,21 @@ export declare class HideoutHelper { */ protected getHideoutManagementConsumptionBonus(pmcData: IPmcData): number; /** - * Adjust craft time based on crafting skill level found in player profile + * Get a multipler based on players skill level and value per level + * @param pmcData Player profile + * @param skill Player skill from profile + * @param valuePerLevel Value from globals.config.SkillsSettings - `PerLevel` + * @returns Multipler from 0 to 1 + */ + protected getSkillBonusMultipliedBySkillLevel(pmcData: IPmcData, skill: SkillTypes, valuePerLevel: number): number; + /** * @param pmcData Player profile * @param productionTime Time to complete hideout craft in seconds - * @returns Adjusted craft time in seconds + * @param skill Skill bonus to get reduction from + * @param amountPerLevel Skill bonus amount to apply + * @returns Seconds to reduce craft time by */ - protected getCraftingSkillProductionTimeReduction(pmcData: IPmcData, productionTime: number): number; + getSkillProductionTimeReduction(pmcData: IPmcData, productionTime: number, skill: SkillTypes, amountPerLevel: number): number; isProduction(productive: Productive): productive is Production; /** * Gather crafted BTC from hideout area and add to inventory @@ -226,15 +255,9 @@ export declare class HideoutHelper { * @param pmcData Player profile * @param request Take production request * @param sessionId Session id - * @returns IItemEventRouterResponse + * @param output Output object to update */ - getBTC(pmcData: IPmcData, request: IHideoutTakeProductionRequestData, sessionId: string): IItemEventRouterResponse; - /** - * Create a single bitcoin request object - * @param pmcData Player profile - * @returns IAddItemRequestData - */ - protected createBitcoinRequest(pmcData: IPmcData): IAddItemRequestData; + getBTC(pmcData: IPmcData, request: IHideoutTakeProductionRequestData, sessionId: string, output: IItemEventRouterResponse): void; /** * Upgrade hideout wall from starting level to interactable level if necessary stations have been upgraded * @param pmcProfile Profile to upgrade wall in @@ -251,4 +274,17 @@ export declare class HideoutHelper { * @param pmcProfile Profile to adjust */ setHideoutImprovementsToCompleted(pmcProfile: IPmcData): void; + /** + * Add/remove bonus combat skill based on number of dogtags in place of fame hideout area + * @param pmcData Player profile + */ + applyPlaceOfFameDogtagBonus(pmcData: IPmcData): void; + /** + * Calculate the raw dogtag combat skill bonus for place of fame based on number of dogtags + * Reverse engineered from client code + * @param pmcData Player profile + * @param activeDogtags Active dogtags in place of fame dogtag slots + * @returns combat bonus + */ + protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: Item[]): number; } diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/HttpServerHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/HttpServerHelper.d.ts index d67b4ec..9d5e6df 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/HttpServerHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/HttpServerHelper.d.ts @@ -1,5 +1,5 @@ -import { IHttpConfig } from "@spt-aki/models/spt/config/IHttpConfig"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; +import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; export declare class HttpServerHelper { protected configServer: ConfigServer; protected httpConfig: IHttpConfig; @@ -17,7 +17,7 @@ export declare class HttpServerHelper { constructor(configServer: ConfigServer); getMimeText(key: string): string; /** - * Combine ip and port into url + * Combine ip and port into address * @returns url */ buildUrl(): string; diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/InRaidHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/InRaidHelper.d.ts index b2bba8c..449be9f 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/InRaidHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/InRaidHelper.d.ts @@ -1,29 +1,29 @@ -import { InventoryHelper } from "@spt-aki/helpers/InventoryHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper"; -import { QuestHelper } from "@spt-aki/helpers/QuestHelper"; -import { IPmcData, IPostRaidPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IQuestStatus, TraderInfo, Victim } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ISaveProgressRequestData } from "@spt-aki/models/eft/inRaid/ISaveProgressRequestData"; -import { IInRaidConfig } from "@spt-aki/models/spt/config/IInRaidConfig"; -import { ILostOnDeathConfig } from "@spt-aki/models/spt/config/ILostOnDeathConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { ProfileFixerService } from "@spt-aki/services/ProfileFixerService"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; -import { ProfileHelper } from "./ProfileHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PaymentHelper } from "@spt/helpers/PaymentHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { QuestHelper } from "@spt/helpers/QuestHelper"; +import { IPmcData, IPostRaidPmcData } from "@spt/models/eft/common/IPmcData"; +import { IQuestStatus, TraderInfo } from "@spt/models/eft/common/tables/IBotBase"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ISaveProgressRequestData } from "@spt/models/eft/inRaid/ISaveProgressRequestData"; +import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; +import { ILostOnDeathConfig } from "@spt/models/spt/config/ILostOnDeathConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { ProfileFixerService } from "@spt/services/ProfileFixerService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class InRaidHelper { protected logger: ILogger; protected timeUtil: TimeUtil; protected saveServer: SaveServer; - protected jsonUtil: JsonUtil; protected itemHelper: ItemHelper; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected inventoryHelper: InventoryHelper; protected profileHelper: ProfileHelper; protected questHelper: QuestHelper; @@ -31,33 +31,22 @@ export declare class InRaidHelper { protected localisationService: LocalisationService; protected profileFixerService: ProfileFixerService; protected configServer: ConfigServer; + protected randomUtil: RandomUtil; + protected cloner: ICloner; protected lostOnDeathConfig: ILostOnDeathConfig; protected inRaidConfig: IInRaidConfig; - constructor(logger: ILogger, timeUtil: TimeUtil, saveServer: SaveServer, jsonUtil: JsonUtil, itemHelper: ItemHelper, databaseServer: DatabaseServer, inventoryHelper: InventoryHelper, profileHelper: ProfileHelper, questHelper: QuestHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, profileFixerService: ProfileFixerService, configServer: ConfigServer); + constructor(logger: ILogger, timeUtil: TimeUtil, saveServer: SaveServer, itemHelper: ItemHelper, databaseService: DatabaseService, inventoryHelper: InventoryHelper, profileHelper: ProfileHelper, questHelper: QuestHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, profileFixerService: ProfileFixerService, configServer: ConfigServer, randomUtil: RandomUtil, cloner: ICloner); /** * Lookup quest item loss from lostOnDeath config * @returns True if items should be removed from inventory */ - removeQuestItemsOnDeath(): boolean; + shouldQuestItemsBeRemovedOnDeath(): boolean; /** * Check items array and add an upd object to money with a stack count of 1 * Single stack money items have no upd object and thus no StackObjectsCount, causing issues * @param items Items array to check */ - addUpdToMoneyFromRaid(items: Item[]): void; - /** - * Add karma changes up and return the new value - * @param existingFenceStanding Current fence standing level - * @param victims Array of kills player performed - * @returns adjusted karma level after kills are taken into account - */ - calculateFenceStandingChangeFromKills(existingFenceStanding: number, victims: Victim[]): number; - /** - * Get the standing gain/loss for killing an npc - * @param victim Who was killed by player - * @returns a numerical standing gain or loss - */ - protected getFenceStandingChangeForKillAsScav(victim: Victim): number; + addStackCountToMoneyFromRaid(items: Item[]): void; /** * Reset a profile to a baseline, used post-raid * Reset points earned during session property @@ -74,7 +63,7 @@ export declare class InRaidHelper { */ protected resetSkillPointsEarnedDuringRaid(profile: IPmcData): void; /** Check counters are correct in profile */ - protected validateBackendCounters(saveProgressRequest: ISaveProgressRequestData, profileData: IPmcData): void; + protected validateTaskConditionCounters(saveProgressRequest: ISaveProgressRequestData, profileData: IPmcData): void; /** * Update various serverPMC profile values; quests/limb hp/trader standing with values post-raic * @param pmcData Server PMC profile @@ -97,6 +86,7 @@ export declare class InRaidHelper { * @param postRaidProfile Profile sent by client with post-raid quests */ protected processAlteredQuests(sessionId: string, pmcData: IPmcData, preRaidQuests: IQuestStatus[], postRaidProfile: IPostRaidPmcData): void; + protected handleFailRestartableQuestStatus(pmcData: IPmcData, postRaidProfile: IPostRaidPmcData, postRaidQuest: IQuestStatus): void; /** * Take body part effects from client profile and apply to server profile * @param saveProgressRequest post-raid request @@ -109,6 +99,12 @@ export declare class InRaidHelper { * @param tradersClientProfile Client */ protected applyTraderStandingAdjustments(tradersServerProfile: Record, tradersClientProfile: Record): void; + /** + * Transfer client achievements into profile + * @param profile Player pmc profile + * @param clientAchievements Achievements from client + */ + protected updateProfileAchievements(profile: IPmcData, clientAchievements: Record): void; /** * Set the SPT inraid location Profile property to 'none' * @param sessionID Session id @@ -129,16 +125,15 @@ export declare class InRaidHelper { * @param sessionID Session id * @param serverProfile Profile to update * @param postRaidProfile Profile returned by client after a raid - * @returns Updated profile */ - setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData): IPmcData; + setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData): void; /** - * Clear pmc inventory of all items except those that are exempt + * Clear PMC inventory of all items except those that are exempt * Used post-raid to remove items after death * @param pmcData Player profile - * @param sessionID Session id + * @param sessionId Session id */ - deleteInventory(pmcData: IPmcData, sessionID: string): void; + deleteInventory(pmcData: IPmcData, sessionId: string): void; /** * Get an array of items from a profile that will be lost on death * @param pmcProfile Profile to get items from diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/InventoryHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/InventoryHelper.d.ts index 0bf2925..f0ff69a 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/InventoryHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/InventoryHelper.d.ts @@ -1,39 +1,33 @@ -import { ContainerHelper } from "@spt-aki/helpers/ContainerHelper"; -import { DialogueHelper } from "@spt-aki/helpers/DialogueHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { TraderAssortHelper } from "@spt-aki/helpers/TraderAssortHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Inventory } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { AddItem, IAddItemRequestData } from "@spt-aki/models/eft/inventory/IAddItemRequestData"; -import { IAddItemTempObject } from "@spt-aki/models/eft/inventory/IAddItemTempObject"; -import { IInventoryMergeRequestData } from "@spt-aki/models/eft/inventory/IInventoryMergeRequestData"; -import { IInventoryMoveRequestData } from "@spt-aki/models/eft/inventory/IInventoryMoveRequestData"; -import { IInventoryRemoveRequestData } from "@spt-aki/models/eft/inventory/IInventoryRemoveRequestData"; -import { IInventorySplitRequestData } from "@spt-aki/models/eft/inventory/IInventorySplitRequestData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IInventoryConfig, RewardDetails } from "@spt-aki/models/spt/config/IInventoryConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { FenceService } from "@spt-aki/services/FenceService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -export interface OwnerInventoryItems { - /** Inventory items from source */ - from: Item[]; - /** Inventory items at destination */ - to: Item[]; - sameInventory: boolean; - isMail: boolean; -} +import { ContainerHelper } from "@spt/helpers/ContainerHelper"; +import { DialogueHelper } from "@spt/helpers/DialogueHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PaymentHelper } from "@spt/helpers/PaymentHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderAssortHelper } from "@spt/helpers/TraderAssortHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; +import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest"; +import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest"; +import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData"; +import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData"; +import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData"; +import { IInventorySplitRequestData } from "@spt/models/eft/inventory/IInventorySplitRequestData"; +import { IInventoryTransferRequestData } from "@spt/models/eft/inventory/IInventoryTransferRequestData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IInventoryConfig, RewardDetails } from "@spt/models/spt/config/IInventoryConfig"; +import { IOwnerInventoryItems } from "@spt/models/spt/inventory/IOwnerInventoryItems"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { FenceService } from "@spt/services/FenceService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class InventoryHelper { protected logger: ILogger; - protected jsonUtil: JsonUtil; protected hashUtil: HashUtil; protected httpResponse: HttpResponseUtil; protected fenceService: FenceService; @@ -44,53 +38,78 @@ export declare class InventoryHelper { protected itemHelper: ItemHelper; protected containerHelper: ContainerHelper; protected profileHelper: ProfileHelper; + protected presetHelper: PresetHelper; protected localisationService: LocalisationService; protected configServer: ConfigServer; + protected cloner: ICloner; protected inventoryConfig: IInventoryConfig; - constructor(logger: ILogger, jsonUtil: JsonUtil, hashUtil: HashUtil, httpResponse: HttpResponseUtil, fenceService: FenceService, databaseServer: DatabaseServer, paymentHelper: PaymentHelper, traderAssortHelper: TraderAssortHelper, dialogueHelper: DialogueHelper, itemHelper: ItemHelper, containerHelper: ContainerHelper, profileHelper: ProfileHelper, localisationService: LocalisationService, configServer: ConfigServer); + constructor(logger: ILogger, hashUtil: HashUtil, httpResponse: HttpResponseUtil, fenceService: FenceService, databaseServer: DatabaseServer, paymentHelper: PaymentHelper, traderAssortHelper: TraderAssortHelper, dialogueHelper: DialogueHelper, itemHelper: ItemHelper, containerHelper: ContainerHelper, profileHelper: ProfileHelper, presetHelper: PresetHelper, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); /** - * BUG: Passing the same item multiple times with a count of 1 will cause multiples of that item to be added (e.g. x3 separate objects of tar cola with count of 1 = 9 tarcolas being added to inventory) - * @param pmcData Profile to add items to - * @param request request data to add items - * @param output response to send back to client - * @param sessionID Session id - * @param callback Code to execute later (function) - * @param foundInRaid Will results added to inventory be set as found in raid - * @param addUpd Additional upd properties for items being added to inventory - * @param useSortingTable Allow items to go into sorting table when stash has no space - * @returns IItemEventRouterResponse - */ - addItem(pmcData: IPmcData, request: IAddItemRequestData, output: IItemEventRouterResponse, sessionID: string, callback: () => void, foundInRaid?: boolean, addUpd?: any, useSortingTable?: boolean): IItemEventRouterResponse; - /** - * Take the given item, find a free slot in passed in inventory and place it there - * If no space in inventory, place in sorting table - * @param itemToAdd Item to add to inventory - * @param stashFS2D Two dimentional stash map - * @param sortingTableFS2D Two dimentional sorting table stash map - * @param itemLib + * Add multiple items to player stash (assuming they all fit) + * @param sessionId Session id + * @param request IAddItemsDirectRequest request * @param pmcData Player profile - * @param useSortingTable Should sorting table be used for overflow items when no inventory space for item - * @param output Client output object - * @returns Client error output if placing item failed + * @param output Client response object */ - protected placeItemInInventory(itemToAdd: IAddItemTempObject, stashFS2D: number[][], sortingTableFS2D: number[][], itemLib: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): IItemEventRouterResponse; + addItemsToStash(sessionId: string, request: IAddItemsDirectRequest, pmcData: IPmcData, output: IItemEventRouterResponse): void; /** - * Add ammo to ammo boxes - * @param itemToAdd Item to check is ammo box - * @param parentId Ammo box parent id - * @param output IItemEventRouterResponse object - * @param sessionID Session id - * @param pmcData Profile to add ammobox to - * @param output object to send to client - * @param foundInRaid should ammo be FiR + * Add whatever is passed in `request.itemWithModsToAdd` into player inventory (if it fits) + * @param sessionId Session id + * @param request addItemDirect request + * @param pmcData Player profile + * @param output Client response object */ - protected hydrateAmmoBoxWithAmmo(pmcData: IPmcData, itemToAdd: IAddItemTempObject, parentId: string, sessionID: string, output: IItemEventRouterResponse, foundInRaid: boolean): void; + addItemToStash(sessionId: string, request: IAddItemDirectRequest, pmcData: IPmcData, output: IItemEventRouterResponse): void; /** - * @param assortItems Items to add to inventory - * @param requestItem Details of purchased item to add to inventory - * @param result Array split stacks are added to + * Set FiR status for an item + its children + * @param itemWithChildren An item + * @param foundInRaid Item was found in raid */ - protected splitStackIntoSmallerStacks(assortItems: Item[], requestItem: AddItem, result: IAddItemTempObject[]): void; + protected setFindInRaidStatusForItem(itemWithChildren: Item[], foundInRaid: boolean): void; + /** + * Remove properties from a Upd object used by a trader/ragfair that are unnecessary to a player + * @param upd Object to update + */ + protected removeTraderRagfairRelatedUpdProperties(upd: Upd): void; + /** + * Can all probided items be added into player inventory + * @param sessionId Player id + * @param itemsWithChildren array of items with children to try and fit + * @returns True all items fit + */ + canPlaceItemsInInventory(sessionId: string, itemsWithChildren: Item[][]): boolean; + /** + * Do the provided items all fit into the grid + * @param containerFS2D Container grid to fit items into + * @param itemsWithChildren items to try and fit into grid + * @returns True all fit + */ + canPlaceItemsInContainer(containerFS2D: number[][], itemsWithChildren: Item[][]): boolean; + /** + * Does an item fit into a container grid + * @param containerFS2D Container grid + * @param itemWithChildren item to check fits + * @returns True it fits + */ + canPlaceItemInContainer(containerFS2D: number[][], itemWithChildren: Item[]): boolean; + /** + * Find a free location inside a container to fit the item + * @param containerFS2D Container grid to add item to + * @param itemWithChildren Item to add to grid + * @param containerId Id of the container we're fitting item into + * @param desiredSlotId slot id value to use, default is "hideout" + */ + placeItemInContainer(containerFS2D: number[][], itemWithChildren: Item[], containerId: string, desiredSlotId?: string): void; + /** + * Find a location to place an item into inventory and place it + * @param stashFS2D 2-dimensional representation of the container slots + * @param sortingTableFS2D 2-dimensional representation of the sorting table slots + * @param itemWithChildren Item to place with children + * @param playerInventory Players inventory + * @param useSortingTable Should sorting table to be used if main stash has no space + * @param output output to send back to client + */ + protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; /** * Handle Remove event * Remove item from player inventory + insured items array @@ -98,16 +117,59 @@ export declare class InventoryHelper { * @param profile Profile to remove item from (pmc or scav) * @param itemId Items id to remove * @param sessionID Session id - * @param output Existing IItemEventRouterResponse object to append data to, creates new one by default if not supplied + * @param output OPTIONAL - IItemEventRouterResponse + */ + removeItem(profile: IPmcData, itemId: string, sessionID: string, output?: IItemEventRouterResponse): void; + /** + * Delete desired item from a player profiles mail + * @param sessionId Session id + * @param removeRequest Remove request + * @param output OPTIONAL - IItemEventRouterResponse + */ + removeItemAndChildrenFromMailRewards(sessionId: string, removeRequest: IInventoryRemoveRequestData, output?: IItemEventRouterResponse): void; + /** + * Find item by id in player inventory and remove x of its count + * @param pmcData player profile + * @param itemId Item id to decrement StackObjectsCount of + * @param countToRemove Number of item to remove + * @param sessionID Session id + * @param output IItemEventRouterResponse * @returns IItemEventRouterResponse */ - removeItem(profile: IPmcData, itemId: string, sessionID: string, output?: IItemEventRouterResponse): IItemEventRouterResponse; - removeItemAndChildrenFromMailRewards(sessionId: string, removeRequest: IInventoryRemoveRequestData, output: IItemEventRouterResponse): IItemEventRouterResponse; - removeItemByCount(pmcData: IPmcData, itemId: string, count: number, sessionID: string, output?: IItemEventRouterResponse): IItemEventRouterResponse; - getItemSize(itemTpl: string, itemID: string, inventoryItem: Item[]): number[]; + removeItemByCount(pmcData: IPmcData, itemId: string, countToRemove: number, sessionID: string, output?: IItemEventRouterResponse): IItemEventRouterResponse; + /** + * Get the height and width of an item - can have children that alter size + * @param itemTpl Item to get size of + * @param itemID Items id to get size of + * @param inventoryItems + * @returns [width, height] + */ + getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; + /** + * Calculates the size of an item including attachements + * takes into account if item is folded + * @param itemTpl Items template id + * @param itemID Items id + * @param inventoryItemHash Hashmap of inventory items + * @returns An array representing the [width, height] of the item + */ protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[]; + /** + * Get a blank two-dimentional representation of a container + * @param containerH Horizontal size of container + * @param containerY Vertical size of container + * @returns Two-dimensional representation of container + */ + protected getBlankContainerMap(containerH: number, containerY: number): number[][]; + /** + * @param containerH Horizontal size of container + * @param containerV Vertical size of container + * @param itemList + * @param containerId Id of the container + * @returns Two-dimensional representation of container + */ + getContainerMap(containerH: number, containerV: number, itemList: Item[], containerId: string): number[][]; protected getInventoryItemHash(inventoryItem: Item[]): InventoryHelper.InventoryItemHash; - getContainerMap(containerW: number, containerH: number, itemList: Item[], containerId: string): number[][]; /** * Return the inventory that needs to be modified (scav/pmc etc) * Changes made to result apply to character inventory @@ -116,19 +178,31 @@ export declare class InventoryHelper { * @param sessionId Session id / playerid * @returns OwnerInventoryItems with inventory of player/scav to adjust */ - getOwnerInventoryItems(request: IInventoryMoveRequestData | IInventorySplitRequestData | IInventoryMergeRequestData, sessionId: string): OwnerInventoryItems; + getOwnerInventoryItems(request: IInventoryMoveRequestData | IInventorySplitRequestData | IInventoryMergeRequestData | IInventoryTransferRequestData, sessionId: string): IOwnerInventoryItems; /** - * Made a 2d array table with 0 - free slot and 1 - used slot - * @param {Object} pmcData - * @param {string} sessionID - * @returns Array + * Get a two dimensional array to represent stash slots + * 0 value = free, 1 = taken + * @param pmcData Player profile + * @param sessionID session id + * @returns 2-dimensional array */ protected getStashSlotMap(pmcData: IPmcData, sessionID: string): number[][]; + /** + * Get a blank two-dimensional array representation of a container + * @param containerTpl Container to get data for + * @returns blank two-dimensional array + */ + getContainerSlotMap(containerTpl: string): number[][]; + /** + * Get a two-dimensional array representation of the players sorting table + * @param pmcData Player profile + * @returns two-dimensional array + */ protected getSortingTableSlotMap(pmcData: IPmcData): number[][]; /** - * Get Player Stash Proper Size - * @param sessionID Playerid - * @returns Array of 2 values, x and y stash size + * Get Players Stash Size + * @param sessionID Players id + * @returns Array of 2 values, horizontal and vertical stash size */ protected getPlayerStashSize(sessionID: string): Record; /** @@ -138,17 +212,17 @@ export declare class InventoryHelper { */ protected getStashType(sessionID: string): string; /** - * Internal helper function to transfer an item from one profile to another. - * @param fromItems Inventory of the source (can be non-player) + * Internal helper function to transfer an item + children from one profile to another. + * @param sourceItems Inventory of the source (can be non-player) * @param toItems Inventory of the destination - * @param body Move request + * @param request Move request */ - moveItemToProfile(fromItems: Item[], toItems: Item[], body: IInventoryMoveRequestData): void; + moveItemToProfile(sourceItems: Item[], toItems: Item[], request: IInventoryMoveRequestData): void; /** * Internal helper function to move item within the same profile_f. * @param pmcData profile to edit * @param inventoryItems - * @param moveRequest + * @param moveRequest client move request * @returns True if move was successful */ moveItemInternal(pmcData: IPmcData, inventoryItems: Item[], moveRequest: IInventoryMoveRequestData): { @@ -164,7 +238,7 @@ export declare class InventoryHelper { /** * Internal helper function to handle cartridges in inventory if any of them exist. */ - protected handleCartridges(items: Item[], body: IInventoryMoveRequestData): void; + protected handleCartridges(items: Item[], request: IInventoryMoveRequestData): void; /** * Get details for how a random loot container should be handled, max rewards, possible reward tpls * @param itemTpl Container being opened @@ -172,6 +246,15 @@ export declare class InventoryHelper { */ getRandomLootContainerRewardDetails(itemTpl: string): RewardDetails; getInventoryConfig(): IInventoryConfig; + /** + * Recursively checks if the given item is + * inside the stash, that is it has the stash as + * ancestor with slotId=hideout + * @param pmcData Player profile + * @param itemToCheck Item to look for + * @returns True if item exists inside stash + */ + isItemInStash(pmcData: IPmcData, itemToCheck: Item): boolean; } declare namespace InventoryHelper { interface InventoryItemHash { diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/ItemHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/ItemHelper.d.ts index c7daa8c..da5dd11 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/ItemHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/ItemHelper.d.ts @@ -1,20 +1,23 @@ -import { HandbookHelper } from "@spt-aki/helpers/HandbookHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { InsuredItem } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { Item, Repairable } from "@spt-aki/models/eft/common/tables/IItem"; -import { IStaticAmmoDetails } from "@spt-aki/models/eft/common/tables/ILootBase"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { ItemBaseClassService } from "@spt-aki/services/ItemBaseClassService"; -import { ItemFilterService } from "@spt-aki/services/ItemFilterService"; -import { LocaleService } from "@spt-aki/services/LocaleService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { MathUtil } from "@spt-aki/utils/MathUtil"; -import { ObjectId } from "@spt-aki/utils/ObjectId"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { HandbookHelper } from "@spt/helpers/HandbookHelper"; +import { IStaticAmmoDetails } from "@spt/models/eft/common/ILocation"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { InsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { Item, Repairable, Upd } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { ItemTpl } from "@spt/models/enums/ItemTpl"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { ItemBaseClassService } from "@spt/services/ItemBaseClassService"; +import { ItemFilterService } from "@spt/services/ItemFilterService"; +import { LocaleService } from "@spt/services/LocaleService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { CompareUtil } from "@spt/utils/CompareUtil"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { JsonUtil } from "@spt/utils/JsonUtil"; +import { MathUtil } from "@spt/utils/MathUtil"; +import { ObjectId } from "@spt/utils/ObjectId"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class ItemHelper { protected logger: ILogger; protected hashUtil: HashUtil; @@ -22,18 +25,60 @@ export declare class ItemHelper { protected randomUtil: RandomUtil; protected objectId: ObjectId; protected mathUtil: MathUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected handbookHelper: HandbookHelper; protected itemBaseClassService: ItemBaseClassService; protected itemFilterService: ItemFilterService; protected localisationService: LocalisationService; protected localeService: LocaleService; + protected compareUtil: CompareUtil; + protected cloner: ICloner; protected readonly defaultInvalidBaseTypes: string[]; - constructor(logger: ILogger, hashUtil: HashUtil, jsonUtil: JsonUtil, randomUtil: RandomUtil, objectId: ObjectId, mathUtil: MathUtil, databaseServer: DatabaseServer, handbookHelper: HandbookHelper, itemBaseClassService: ItemBaseClassService, itemFilterService: ItemFilterService, localisationService: LocalisationService, localeService: LocaleService); + constructor(logger: ILogger, hashUtil: HashUtil, jsonUtil: JsonUtil, randomUtil: RandomUtil, objectId: ObjectId, mathUtil: MathUtil, databaseService: DatabaseService, handbookHelper: HandbookHelper, itemBaseClassService: ItemBaseClassService, itemFilterService: ItemFilterService, localisationService: LocalisationService, localeService: LocaleService, compareUtil: CompareUtil, cloner: ICloner); + /** + * Does the provided pool of items contain the desired item + * @param itemPool Item collection to check + * @param item Item to look for + * @param slotId OPTIONAL - slotid of desired item + * @returns True if pool contains item + */ + hasItemWithTpl(itemPool: Item[], item: ItemTpl, slotId?: string): boolean; + /** + * Get the first item from provided pool with the desired tpl + * @param itemPool Item collection to search + * @param item Item to look for + * @param slotId OPTIONAL - slotid of desired item + * @returns Item or undefined + */ + getItemFromPoolByTpl(itemPool: Item[], item: ItemTpl, slotId?: string): Item | undefined; + /** + * This method will compare two items (with all its children) and see if the are equivalent. + * This method will NOT compare IDs on the items + * @param item1 first item with all its children to compare + * @param item2 second item with all its children to compare + * @param compareUpdProperties Upd properties to compare between the items + * @returns true if they are the same, false if they arent + */ + isSameItems(item1: Item[], item2: Item[], compareUpdProperties?: Set): boolean; + /** + * This method will compare two items and see if the are equivalent. + * This method will NOT compare IDs on the items + * @param item1 first item to compare + * @param item2 second item to compare + * @param compareUpdProperties Upd properties to compare between the items + * @returns true if they are the same, false if they arent + */ + isSameItem(item1: Item, item2: Item, compareUpdProperties?: Set): boolean; + /** + * Helper method to generate a Upd based on a template + * @param itemTemplate the item template to generate a Upd for + * @returns A Upd with all the default properties set + */ + generateUpdForItem(itemTemplate: ITemplateItem): Upd; /** * Checks if an id is a valid item. Valid meaning that it's an item that be stored in stash - * @param {string} tpl the template id / tpl - * @returns boolean; true for items that may be in player possession and not quest items + * @param {string} tpl the template id / tpl + * @returns boolean; true for items that may be in player possession and not quest items */ isValidItem(tpl: string, invalidBaseTypes?: string[]): boolean; /** @@ -51,6 +96,44 @@ export declare class ItemHelper { * @returns true if any supplied base classes match */ isOfBaseclasses(tpl: string, baseClassTpls: string[]): boolean; + /** + * Does the provided item have the chance to require soft armor inserts + * Only applies to helmets/vest/armors. + * Not all head gear needs them + * @param itemTpl item to check + * @returns Does item have the possibility ot need soft inserts + */ + armorItemCanHoldMods(itemTpl: string): boolean; + /** + * Does the provided item tpl need soft/removable inserts to function + * @param itemTpl Armor item + * @returns True if item needs some kind of insert + */ + armorItemHasRemovableOrSoftInsertSlots(itemTpl: string): boolean; + /** + * Does the pased in tpl have ability to hold removable plate items + * @param itemTpl item tpl to check for plate support + * @returns True when armor can hold plates + */ + armorItemHasRemovablePlateSlots(itemTpl: string): boolean; + /** + * Does the provided item tpl require soft inserts to become a valid armor item + * @param itemTpl Item tpl to check + * @returns True if it needs armor inserts + */ + itemRequiresSoftInserts(itemTpl: string): boolean; + /** + * Get all soft insert slot ids + * @returns An array of soft insert ids (e.g. soft_armor_back, helmet_top) + */ + getSoftInsertSlotIds(): string[]; + /** + * 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 + * @param tpls item tpls to look up the price of + * @returns Total price in roubles + */ + getItemAndChildrenPrice(tpls: string[]): number; /** * 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 @@ -83,43 +166,6 @@ export declare class ItemHelper { * @returns Fixed item */ fixItemStackCount(item: Item): Item; - /** - * AmmoBoxes contain StackSlots which need to be filled for the AmmoBox to have content. - * Here's what a filled AmmoBox looks like: - * { - * "_id": "b1bbe982daa00ac841d4ae4d", - * "_tpl": "57372c89245977685d4159b1", - * "parentId": "5fe49a0e2694b0755a504876", - * "slotId": "hideout", - * "location": { - * "x": 3, - * "y": 4, - * "r": 0 - * }, - * "upd": { - * "StackObjectsCount": 1 - * } - * }, - * { - * "_id": "b997b4117199033afd274a06", - * "_tpl": "56dff061d2720bb5668b4567", - * "parentId": "b1bbe982daa00ac841d4ae4d", - * "slotId": "cartridges", - * "location": 0, - * "upd": { - * "StackObjectsCount": 30 - * } - * } - * Given the AmmoBox Item (first object) this function generates the StackSlot (second object) and returns it. - * StackSlots are only used for AmmoBoxes which only have one element in StackSlots. However, it seems to be generic - * to possibly also have more than one StackSlot. As good as possible, without seeing items having more than one - * StackSlot, this function takes account of this and creates and returns an array of StackSlotItems - * - * @param {object} item The item template of the AmmoBox as given in items.json - * @param {string} parentId The id of the AmmoBox instance these StackSlotItems should be children of - * @returns {array} The array of StackSlotItems - */ - generateItemsFromStackSlot(item: ITemplateItem, parentId: string): Item[]; /** * Get cloned copy of all item data from items.json * @returns array of ITemplateItem objects @@ -131,13 +177,23 @@ export declare class ItemHelper { * @returns bool - is valid + template item object as array */ getItem(tpl: string): [boolean, ITemplateItem]; + itemHasSlots(itemTpl: string): boolean; isItemInDb(tpl: string): boolean; /** - * get normalized value (0-1) based on item condition - * @param item - * @returns number between 0 and 1 + * Calcualte the average quality of an item and its children + * @param items An offers item to process + * @param skipArmorItemsWithoutDurability Skip over armor items without durability + * @returns % quality modifer between 0 and 1 */ - getItemQualityModifier(item: Item): number; + getItemQualityModifierForItems(items: Item[], skipArmorItemsWithoutDurability?: boolean): number; + /** + * get normalized value (0-1) based on item condition + * Will return -1 for base armor items with 0 durability + * @param item + * @param skipArmorItemsWithoutDurability return -1 for armor items that have maxdurability of 0 + * @returns Number between 0 and 1 + */ + getItemQualityModifier(item: Item, skipArmorItemsWithoutDurability?: boolean): number; /** * Get a quality value based on a repairable items (weapon/armor) current state between current and max durability * @param itemDetails Db details for item we want quality value for @@ -149,17 +205,18 @@ export declare class ItemHelper { /** * Recursive function that looks at every item from parameter and gets their childrens Ids + includes parent item in results * @param items Array of items (item + possible children) - * @param itemId Parent items id + * @param baseItemId Parent items id * @returns an array of strings */ - findAndReturnChildrenByItems(items: Item[], itemId: string): string[]; + findAndReturnChildrenByItems(items: Item[], baseItemId: string): string[]; /** * A variant of findAndReturnChildren where the output is list of item objects instead of their ids. - * @param items - * @param baseItemId + * @param items Array of items (item + possible children) + * @param baseItemId Parent items id + * @param modsOnly Include only mod items, exclude items stored inside root item * @returns An array of Item objects */ - findAndReturnChildrenAsItems(items: Item[], baseItemId: string): Item[]; + findAndReturnChildrenAsItems(items: Item[], baseItemId: string, modsOnly?: boolean): Item[]; /** * Find children of the item in a given assort (weapons parts for example, need recursive loop function) * @param itemIdToFind Template id of item to check for @@ -192,28 +249,42 @@ export declare class ItemHelper { */ isItemTplStackable(tpl: string): boolean; /** - * split item stack if it exceeds its items StackMaxSize property + * Split item stack if it exceeds its items StackMaxSize property into child items of passed in parent * @param itemToSplit Item to split into smaller stacks - * @returns Array of split items + * @returns Array of root item + children */ splitStack(itemToSplit: Item): Item[]; + /** + * Turn items like money into separate stacks that adhere to max stack size + * @param itemToSplit Item to split into smaller stacks + * @returns + */ + splitStackIntoSeparateItems(itemToSplit: Item): Item[][]; /** * Find Barter items from array of items * @param {string} by tpl or id - * @param {Item[]} items Array of items to iterate over - * @param {string} barterItemId + * @param {Item[]} itemsToSearch Array of items to iterate over + * @param {string} desiredBarterItemIds * @returns Array of Item objects */ - findBarterItems(by: "tpl" | "id", items: Item[], barterItemId: string): Item[]; + findBarterItems(by: "tpl" | "id", itemsToSearch: Item[], desiredBarterItemIds: string | string[]): Item[]; /** - * Regenerate all guids with new ids, exceptions are for items that cannot be altered (e.g. stash/sorting table) + * Regenerate all GUIDs with new IDs, for the exception of special item types (e.g. quest, sorting table, etc.) This + * function will not mutate the original items array, but will return a new array with new GUIDs. + * + * @param originalItems Items to adjust the IDs of * @param pmcData Player profile - * @param items Items to adjust ID values of - * @param insuredItems insured items to not replace ids for - * @param fastPanel + * @param insuredItems Insured items that should not have their IDs replaced + * @param fastPanel Quick slot panel * @returns Item[] */ - replaceIDs(pmcData: IPmcData, items: Item[], insuredItems?: InsuredItem[], fastPanel?: any): Item[]; + replaceIDs(originalItems: Item[], pmcData?: IPmcData, insuredItems?: InsuredItem[], fastPanel?: any): Item[]; + /** + * Mark the passed in array of items as found in raid. + * Modifies passed in items + * @param items The list of items to mark as FiR + */ + setFoundInRaid(items: Item[]): void; /** * WARNING, SLOW. Recursively loop down through an items hierarchy to see if any of the ids match the supplied list, return true if any do * @param {string} tpl Items tpl to check parents of @@ -236,9 +307,9 @@ export declare class ItemHelper { * * @param item The item to be checked * @param parent The parent of the item to be checked - * @returns True if the item is actually moddable, false if it is not, and null if the check cannot be performed. + * @returns True if the item is actually moddable, false if it is not, and undefined if the check cannot be performed. */ - isRaidModdable(item: Item, parent: Item): boolean | null; + isRaidModdable(item: Item, parent: Item): boolean | undefined; /** * Retrieves the main parent item for a given attachment item. * @@ -251,17 +322,11 @@ export declare class ItemHelper { * 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. * - * To generate the map: - * ``` - * const itemsMap = new Map(); - * items.forEach(item => itemsMap.set(item._id, item)); - * ``` - * * @param itemId - The unique identifier of the item for which to find the main parent. * @param itemsMap - A Map containing item IDs mapped to their corresponding Item objects for quick lookup. - * @returns The Item object representing the top-most parent of the given item, or `null` if no such parent exists. + * @returns The Item object representing the top-most parent of the given item, or `undefined` if no such parent exists. */ - getAttachmentMainParent(itemId: string, itemsMap: Map): Item | null; + getAttachmentMainParent(itemId: string, itemsMap: Map): Item | undefined; /** * Determines if an item is an attachment that is currently attached to it's parent item. * @@ -269,6 +334,22 @@ export declare class ItemHelper { * @returns true if the item is attached attachment, otherwise false. */ isAttachmentAttached(item: Item): boolean; + /** + * 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 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. + * + * @param itemId - The unique identifier of the item for which to find the equipment parent. + * @param itemsMap - A Map containing item IDs mapped to their corresponding Item objects for quick lookup. + * @returns The Item object representing the equipment parent of the given item, or `undefined` if no such parent exists. + */ + getEquipmentParent(itemId: string, itemsMap: Map): Item | undefined; /** * Get the inventory size of an item * @param items Item with children @@ -281,13 +362,19 @@ export declare class ItemHelper { * @param item Db item template to look up Cartridge filter values from * @returns Caliber of cartridge */ - getRandomCompatibleCaliberTemplateId(item: ITemplateItem): string; + getRandomCompatibleCaliberTemplateId(item: ITemplateItem): string | undefined; /** * Add cartridges to the ammo box with correct max stack sizes * @param ammoBox Box to add cartridges to * @param ammoBoxDetails Item template from items db */ addCartridgesToAmmoBox(ammoBox: Item[], ammoBoxDetails: ITemplateItem): void; + /** + * Add a single stack of cartridges to the ammo box + * @param ammoBox Box to add cartridges to + * @param ammoBoxDetails Item template from items db + */ + addSingleStackCartridgesToAmmoBox(ammoBox: Item[], ammoBoxDetails: ITemplateItem): void; /** * Check if item is stored inside of a container * @param item Item to check is inside of container @@ -303,16 +390,18 @@ export declare class ItemHelper { * @param staticAmmoDist Cartridge distribution * @param caliber Caliber of cartridge to add to magazine * @param minSizePercent % the magazine must be filled to + * @param defaultCartridgeTpl Cartridge to use when none found + * @param weapon Weapon the magazine will be used for (if passed in uses Chamber as whitelist) */ - fillMagazineWithRandomCartridge(magazine: Item[], magTemplate: ITemplateItem, staticAmmoDist: Record, caliber?: string, minSizePercent?: number): void; + fillMagazineWithRandomCartridge(magazine: Item[], magTemplate: ITemplateItem, staticAmmoDist: Record, caliber?: string, minSizePercent?: number, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; /** * Add child items to a magazine of a specific cartridge - * @param magazine Magazine to add child items to + * @param magazineWithChildCartridges Magazine to add child items to * @param magTemplate Db template of magazine * @param cartridgeTpl Cartridge to add to magazine * @param minSizePercent % the magazine must be filled to */ - fillMagazineWithCartridge(magazine: Item[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizePercent?: number): void; + fillMagazineWithCartridge(magazineWithChildCartridges: Item[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizePercent?: number): void; /** * Choose a random bullet type from the list of possible a magazine has * @param magTemplate Magazine template from Db @@ -323,18 +412,21 @@ export declare class ItemHelper { * Chose a randomly weighted cartridge that fits * @param caliber Desired caliber * @param staticAmmoDist Cartridges and thier weights + * @param fallbackCartridgeTpl If a cartridge cannot be found in the above staticAmmoDist param, use this instead + * @param cartridgeWhitelist OPTIONAL whitelist for cartridges * @returns Tpl of cartridge */ - protected drawAmmoTpl(caliber: string, staticAmmoDist: Record): string; + protected drawAmmoTpl(caliber: string, staticAmmoDist: Record, fallbackCartridgeTpl: string, cartridgeWhitelist?: string[]): string | undefined; /** * Create a basic cartrige object * @param parentId container cartridges will be placed in * @param ammoTpl Cartridge to insert * @param stackCount Count of cartridges inside parent * @param location Location inside parent (e.g. 0, 1) + * @param foundInRaid OPTIONAL - Are cartridges found in raid (SpawnedInSession) * @returns Item */ - createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number): Item; + createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): Item; /** * Get the size of a stack, return 1 if no stack object count property found * @param item Item to get stack size of @@ -344,10 +436,80 @@ export declare class ItemHelper { /** * Get the name of an item from the locale file using the item tpl * @param itemTpl Tpl of item to get name of - * @returns Name of item + * @returns Full name, short name if not found */ getItemName(itemTpl: string): string; + /** + * Get all item tpls with a desired base type + * @param desiredBaseType Item base type wanted + * @returns Array of tpls + */ getItemTplsOfBaseType(desiredBaseType: string): string[]; + /** + * Add child slot items to an item, chooses random child item if multiple choices exist + * @param itemToAdd array with single object (root item) + * @param itemToAddTemplate Db tempalte for root item + * @param modSpawnChanceDict Optional dictionary of mod name + % chance mod will be included in item (e.g. front_plate: 100) + * @param requiredOnly Only add required mods + * @returns Item with children + */ + addChildSlotItems(itemToAdd: Item[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): Item[]; + /** + * Get a compatible tpl from the array provided where it is not found in the provided incompatible mod tpls parameter + * @param possibleTpls Tpls to randomly choose from + * @param incompatibleModTpls Incompatible tpls to not allow + * @returns Chosen tpl or undefined + */ + getCompatibleTplFromArray(possibleTpls: string[], incompatibleModTpls: Set): string | undefined; + /** + * Is the provided item._props.Slots._name property a plate slot + * @param slotName Name of slot (_name) of Items Slot array + * @returns True if its a slot that holds a removable palte + */ + isRemovablePlateSlot(slotName: string): boolean; + /** + * Get a list of slot names that hold removable plates + * @returns Array of slot ids (e.g. front_plate) + */ + getRemovablePlateSlotIds(): string[]; + /** + * Generate new unique ids for child items while preserving hierarchy + * @param rootItem Base/primary item + * @param itemWithChildren Primary item + children of primary item + * @returns Item array with updated IDs + */ + reparentItemAndChildren(rootItem: Item, itemWithChildren: Item[]): Item[]; + /** + * Update a root items _id property value to be unique + * @param itemWithChildren Item to update root items _id property + * @param newId Optional: new id to use + * @returns New root id + */ + remapRootItemId(itemWithChildren: Item[], newId?: string): string; + /** + * 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. + * + * @param rootId The ID of the "root" of the container. + * @param items Array of Items that should be adjusted. + * @returns Array of Items that have been adopted. + */ + adoptOrphanedItems(rootId: string, items: Item[]): Item[]; + /** + * Populate a Map object of items for quick lookup using their ID. + * + * @param items An array of Items that should be added to a Map. + * @returns A Map where the keys are the item IDs and the values are the corresponding Item objects. + */ + generateItemsMap(items: Item[]): Map; + /** + * Add a blank upd object to passed in item if it does not exist already + * @param item item to add upd to + * @param warningMessageWhenMissing text to write to log when upd object was not found + * @returns True when upd object was added + */ + addUpdObjectToItem(item: Item, warningMessageWhenMissing?: string): boolean; } declare namespace ItemHelper { interface ItemSize { diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/NotificationSendHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/NotificationSendHelper.d.ts index 5f4a533..3a74563 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/NotificationSendHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/NotificationSendHelper.d.ts @@ -1,22 +1,22 @@ -import { INotification } from "@spt-aki/models/eft/notifier/INotifier"; -import { Dialogue, IUserDialogInfo } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { MessageType } from "@spt-aki/models/enums/MessageType"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { WebSocketServer } from "@spt-aki/servers/WebSocketServer"; -import { NotificationService } from "@spt-aki/services/NotificationService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; +import { Dialogue, IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; +import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; +import { MessageType } from "@spt/models/enums/MessageType"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { SptWebSocketConnectionHandler } from "@spt/servers/ws/SptWebSocketConnectionHandler"; +import { NotificationService } from "@spt/services/NotificationService"; +import { HashUtil } from "@spt/utils/HashUtil"; export declare class NotificationSendHelper { - protected webSocketServer: WebSocketServer; + protected sptWebSocketConnection: SptWebSocketConnectionHandler; protected hashUtil: HashUtil; protected saveServer: SaveServer; protected notificationService: NotificationService; - constructor(webSocketServer: WebSocketServer, hashUtil: HashUtil, saveServer: SaveServer, notificationService: NotificationService); + constructor(sptWebSocketConnection: SptWebSocketConnectionHandler, hashUtil: HashUtil, saveServer: SaveServer, notificationService: NotificationService); /** * Send notification message to the appropriate channel * @param sessionID * @param notificationMessage */ - sendMessage(sessionID: string, notificationMessage: INotification): void; + sendMessage(sessionID: string, notificationMessage: IWsNotificationEvent): void; /** * Send a message directly to the player * @param sessionId Session id diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/NotifierHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/NotifierHelper.d.ts index 9c27224..b947f1b 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/NotifierHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/NotifierHelper.d.ts @@ -1,26 +1,28 @@ -import { HttpServerHelper } from "@spt-aki/helpers/HttpServerHelper"; -import { INotification } from "@spt-aki/models/eft/notifier/INotifier"; -import { Message, MessageContentRagfair } from "@spt-aki/models/eft/profile/IAkiProfile"; +import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { Message, MessageContentRagfair } from "@spt/models/eft/profile/ISptProfile"; +import { IWsChatMessageReceived } from "@spt/models/eft/ws/IWsChatMessageReceived"; +import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; +import { IWsRagfairOfferSold } from "@spt/models/eft/ws/IWsRagfairOfferSold"; export declare class NotifierHelper { protected httpServerHelper: HttpServerHelper; /** * The default notification sent when waiting times out. */ - protected defaultNotification: INotification; + protected defaultNotification: IWsNotificationEvent; constructor(httpServerHelper: HttpServerHelper); - getDefaultNotification(): INotification; + getDefaultNotification(): IWsNotificationEvent; /** * Create a new notification that displays the "Your offer was sold!" prompt and removes sold offer from "My Offers" on clientside * @param dialogueMessage Message from dialog that was sent * @param ragfairData Ragfair data to attach to notification * @returns */ - createRagfairOfferSoldNotification(dialogueMessage: Message, ragfairData: MessageContentRagfair): INotification; + createRagfairOfferSoldNotification(dialogueMessage: Message, ragfairData: MessageContentRagfair): IWsRagfairOfferSold; /** * Create a new notification with the specified dialogueMessage object * @param dialogueMessage * @returns */ - createNewMessageNotification(dialogueMessage: Message): INotification; + createNewMessageNotification(dialogueMessage: Message): IWsChatMessageReceived; getWebSocketServer(sessionID: string): string; } diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/PaymentHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/PaymentHelper.d.ts index 04d4163..6971547 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/PaymentHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/PaymentHelper.d.ts @@ -1,5 +1,5 @@ -import { IInventoryConfig } from "@spt-aki/models/spt/config/IInventoryConfig"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; +import { IInventoryConfig } from "@spt/models/spt/config/IInventoryConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; export declare class PaymentHelper { protected configServer: ConfigServer; protected inventoryConfig: IInventoryConfig; diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/PresetHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/PresetHelper.d.ts index 6722c92..f16d6ce 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/PresetHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/PresetHelper.d.ts @@ -1,23 +1,55 @@ -import { IPreset } from "@spt-aki/models/eft/common/IGlobals"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { IPreset } from "@spt/models/eft/common/IGlobals"; +import { BaseClasses } from "@spt/models/enums/BaseClasses"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class PresetHelper { - protected jsonUtil: JsonUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; + protected itemHelper: ItemHelper; + protected cloner: ICloner; protected lookup: Record; - protected defaultPresets: Record; - constructor(jsonUtil: JsonUtil, databaseServer: DatabaseServer); + protected defaultEquipmentPresets: Record; + protected defaultWeaponPresets: Record; + constructor(databaseService: DatabaseService, itemHelper: ItemHelper, cloner: ICloner); hydratePresetStore(input: Record): void; + /** + * Get default weapon and equipment presets + * @returns Dictionary + */ getDefaultPresets(): Record; + /** + * Get default weapon presets + * @returns Dictionary + */ + getDefaultWeaponPresets(): Record; + /** + * Get default equipment presets + * @returns Dictionary + */ + getDefaultEquipmentPresets(): Record; isPreset(id: string): boolean; + /** + * Checks to see if the preset is of the given base class. + * @param id The id of the preset + * @param baseClass The BaseClasses enum to check against + * @returns True if the preset is of the given base class, false otherwise + */ + isPresetBaseClass(id: string, baseClass: BaseClasses): boolean; hasPreset(templateId: string): boolean; getPreset(id: string): IPreset; + getAllPresets(): IPreset[]; getPresets(templateId: string): IPreset[]; /** - * Get the default preset for passed in weapon id - * @param templateId Weapon id to get preset for + * Get the default preset for passed in item id + * @param templateId Item id to get preset for * @returns Null if no default preset, otherwise IPreset */ - getDefaultPreset(templateId: string): IPreset; + getDefaultPreset(templateId: string): IPreset | undefined; getBaseItemTpl(presetId: string): string; + /** + * Return the price of the preset for the given item tpl, or for the tpl itself if no preset exists + * @param tpl The item template to get the price of + * @returns The price of the given item preset, or base item if no preset exists + */ + getDefaultPresetOrItemPrice(tpl: string): number; } diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/ProbabilityHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/ProbabilityHelper.d.ts index 8aceb67..fa12125 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/ProbabilityHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/ProbabilityHelper.d.ts @@ -1,5 +1,5 @@ -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class ProbabilityHelper { protected logger: ILogger; protected randomUtil: RandomUtil; diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/ProfileHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/ProfileHelper.d.ts index 938c796..0671179 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/ProfileHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/ProfileHelper.d.ts @@ -1,40 +1,51 @@ -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Common, CounterKeyValue, Stats } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { IAkiProfile } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { IValidateNicknameRequestData } from "@spt-aki/models/eft/profile/IValidateNicknameRequestData"; -import { SkillTypes } from "@spt-aki/models/enums/SkillTypes"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { ProfileSnapshotService } from "@spt-aki/services/ProfileSnapshotService"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; -import { Watermark } from "@spt-aki/utils/Watermark"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Common, CounterKeyValue, Stats } from "@spt/models/eft/common/tables/IBotBase"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; +import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; +import { SkillTypes } from "@spt/models/enums/SkillTypes"; +import { IInventoryConfig } from "@spt/models/spt/config/IInventoryConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { ProfileSnapshotService } from "@spt/services/ProfileSnapshotService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { Watermark } from "@spt/utils/Watermark"; export declare class ProfileHelper { protected logger: ILogger; - protected jsonUtil: JsonUtil; + protected hashUtil: HashUtil; protected watermark: Watermark; protected timeUtil: TimeUtil; protected saveServer: SaveServer; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected itemHelper: ItemHelper; protected profileSnapshotService: ProfileSnapshotService; protected localisationService: LocalisationService; - constructor(logger: ILogger, jsonUtil: JsonUtil, watermark: Watermark, timeUtil: TimeUtil, saveServer: SaveServer, databaseServer: DatabaseServer, itemHelper: ItemHelper, profileSnapshotService: ProfileSnapshotService, localisationService: LocalisationService); + protected configServer: ConfigServer; + protected cloner: ICloner; + protected inventoryConfig: IInventoryConfig; + constructor(logger: ILogger, hashUtil: HashUtil, watermark: Watermark, timeUtil: TimeUtil, saveServer: SaveServer, databaseService: DatabaseService, itemHelper: ItemHelper, profileSnapshotService: ProfileSnapshotService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); /** * Remove/reset a completed quest condtion from players profile quest data * @param sessionID Session id * @param questConditionId Quest with condition to remove */ - removeCompletedQuestConditionFromProfile(pmcData: IPmcData, questConditionId: Record): void; + removeQuestConditionFromProfile(pmcData: IPmcData, questConditionId: Record): void; /** * Get all profiles from server * @returns Dictionary of profiles */ - getProfiles(): Record; - getCompleteProfile(sessionID: string): IPmcData[]; + getProfiles(): Record; + /** + * Get the pmc and scav profiles as an array by profile id + * @param sessionId + * @returns Array of IPmcData objects + */ + getCompleteProfile(sessionId: string): IPmcData[]; /** * Fix xp doubling on post-raid xp reward screen by sending a 'dummy' profile to the post-raid screen * Server saves the post-raid changes prior to the xp screen getting the profile, this results in the xp screen using @@ -45,39 +56,77 @@ export declare class ProfileHelper { * @param output pmc and scav profiles array * @param pmcProfile post-raid pmc profile * @param scavProfile post-raid scav profile - * @returns updated profile array + * @returns Updated profile array */ - protected postRaidXpWorkaroundFix(sessionId: string, output: IPmcData[], pmcProfile: IPmcData, scavProfile: IPmcData): IPmcData[]; + protected postRaidXpWorkaroundFix(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, output: IPmcData[]): IPmcData[]; /** * Check if a nickname is used by another profile loaded by the server - * @param nicknameRequest + * @param nicknameRequest nickname request object * @param sessionID Session id - * @returns True if already used + * @returns True if already in use */ isNicknameTaken(nicknameRequest: IValidateNicknameRequestData, sessionID: string): boolean; - protected profileHasInfoProperty(profile: IAkiProfile): boolean; - protected nicknameMatches(profileName: string, nicknameRequest: string): boolean; - protected sessionIdMatchesProfileId(profileId: string, sessionId: string): boolean; + protected profileHasInfoProperty(profile: ISptProfile): boolean; + protected stringsMatch(stringA: string, stringB: string): boolean; /** * Add experience to a PMC inside the players profile * @param sessionID Session id * @param experienceToAdd Experience to add to PMC character */ addExperienceToPmc(sessionID: string, experienceToAdd: number): void; - getProfileByPmcId(pmcId: string): IPmcData; + /** + * Iterate all profiles and find matching pmc profile by provided id + * @param pmcId Profile id to find + * @returns IPmcData + */ + getProfileByPmcId(pmcId: string): IPmcData | undefined; + /** + * Get experience value for given level + * @param level Level to get xp for + * @returns Number of xp points for level + */ getExperience(level: number): number; + /** + * Get the max level a player can be + * @returns Max level + */ getMaxLevel(): number; - getDefaultAkiDataObject(): any; - getFullProfile(sessionID: string): IAkiProfile; - getPmcProfile(sessionID: string): IPmcData; + getDefaultSptDataObject(): any; + /** + * Get full representation of a players profile json + * @param sessionID Profile id to get + * @returns ISptProfile object + */ + getFullProfile(sessionID: string): ISptProfile | undefined; + /** + * Get a PMC profile by its session id + * @param sessionID Profile id to return + * @returns IPmcData object + */ + getPmcProfile(sessionID: string): IPmcData | undefined; + /** + * Is given user id a player + * @param userId Id to validate + * @returns True is a player + */ + isPlayer(userId: string): boolean; + /** + * Get a full profiles scav-specific sub-profile + * @param sessionID Profiles id + * @returns IPmcData object + */ getScavProfile(sessionID: string): IPmcData; /** * Get baseline counter values for a fresh profile - * @returns Stats + * @returns Default profile Stats object */ getDefaultCounters(): Stats; + /** + * is this profile flagged for data removal + * @param sessionID Profile id + * @returns True if profile is to be wiped of data/progress + */ protected isWiped(sessionID: string): boolean; - protected getServerVersion(): string; /** * Iterate over player profile inventory items and find the secure container and remove it * @param profile Profile to remove secure container from @@ -86,18 +135,20 @@ export declare class ProfileHelper { removeSecureContainer(profile: IPmcData): IPmcData; /** * Flag a profile as having received a gift - * Store giftid in profile aki object + * Store giftid in profile spt object * @param playerId Player to add gift flag to * @param giftId Gift player received + * @param maxCount Limit of how many of this gift a player can have */ - addGiftReceivedFlagToProfile(playerId: string, giftId: string): void; + flagGiftReceivedInProfile(playerId: string, giftId: string, maxCount: number): void; /** * Check if profile has recieved a gift by id * @param playerId Player profile to check for gift * @param giftId Gift to check for + * @param maxGiftCount Max times gift can be given to player * @returns True if player has recieved gift previously */ - playerHasRecievedGift(playerId: string, giftId: string): boolean; + playerHasRecievedMaxNumberOfGift(playerId: string, giftId: string, maxGiftCount: number): boolean; /** * Find Stat in profile counters and increment by one * @param counters Counters to search for key @@ -120,5 +171,31 @@ export declare class ProfileHelper { * @returns */ addSkillPointsToPlayer(pmcProfile: IPmcData, skill: SkillTypes, pointsToAdd: number, useSkillProgressRateMultipler?: boolean): void; + /** + * Get a speciic common skill from supplied profile + * @param pmcData Player profile + * @param skill Skill to look up and return value from + * @returns Common skill object from desired profile + */ getSkillFromProfile(pmcData: IPmcData, skill: SkillTypes): Common; + /** + * Is the provided session id for a developer account + * @param sessionID Profile id ot check + * @returns True if account is developer + */ + isDeveloperAccount(sessionID: string): boolean; + /** + * Add stash row bonus to profile or increments rows given count if it already exists + * @param sessionId Profile id to give rows to + * @param rowsToAdd How many rows to give profile + */ + addStashRowsBonusToProfile(sessionId: string, rowsToAdd: number): void; + playerIsFleaBanned(pmcProfile: IPmcData): boolean; + /** + * Add an achievement to player profile + * @param pmcProfile Profile to add achievement to + * @param achievementId Id of achievement to add + */ + addAchievementToProfile(pmcProfile: IPmcData, achievementId: string): void; + hasAccessToRepeatableFreeRefreshSystem(pmcProfile: IPmcData): boolean; } diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/QuestConditionHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/QuestConditionHelper.d.ts index 1e4c5f7..c50a9c3 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/QuestConditionHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/QuestConditionHelper.d.ts @@ -1,8 +1,8 @@ -import { AvailableForConditions } from "@spt-aki/models/eft/common/tables/IQuest"; +import { IQuestCondition } from "@spt/models/eft/common/tables/IQuest"; export declare class QuestConditionHelper { - getQuestConditions(q: AvailableForConditions[], furtherFilter?: (a: AvailableForConditions) => AvailableForConditions[]): AvailableForConditions[]; - getLevelConditions(q: AvailableForConditions[], furtherFilter?: (a: AvailableForConditions) => AvailableForConditions[]): AvailableForConditions[]; - getLoyaltyConditions(q: AvailableForConditions[], furtherFilter?: (a: AvailableForConditions) => AvailableForConditions[]): AvailableForConditions[]; - getStandingConditions(q: AvailableForConditions[], furtherFilter?: (a: AvailableForConditions) => AvailableForConditions[]): AvailableForConditions[]; - protected filterConditions(q: AvailableForConditions[], questType: string, furtherFilter?: (a: AvailableForConditions) => AvailableForConditions[]): AvailableForConditions[]; + getQuestConditions(q: IQuestCondition[], furtherFilter?: (a: IQuestCondition) => IQuestCondition[]): IQuestCondition[]; + getLevelConditions(q: IQuestCondition[], furtherFilter?: (a: IQuestCondition) => IQuestCondition[]): IQuestCondition[]; + getLoyaltyConditions(q: IQuestCondition[], furtherFilter?: (a: IQuestCondition) => IQuestCondition[]): IQuestCondition[]; + getStandingConditions(q: IQuestCondition[], furtherFilter?: (a: IQuestCondition) => IQuestCondition[]): IQuestCondition[]; + protected filterConditions(q: IQuestCondition[], questType: string, furtherFilter?: (a: IQuestCondition) => IQuestCondition[]): IQuestCondition[]; } diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/QuestHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/QuestHelper.d.ts index 2b9a531..2b84b8f 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/QuestHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/QuestHelper.d.ts @@ -1,49 +1,53 @@ -import { DialogueHelper } from "@spt-aki/helpers/DialogueHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { QuestConditionHelper } from "@spt-aki/helpers/QuestConditionHelper"; -import { RagfairServerHelper } from "@spt-aki/helpers/RagfairServerHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Common, IQuestStatus } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { AvailableForConditions, AvailableForProps, IQuest, Reward } from "@spt-aki/models/eft/common/tables/IQuest"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IAcceptQuestRequestData } from "@spt-aki/models/eft/quests/IAcceptQuestRequestData"; -import { IFailQuestRequestData } from "@spt-aki/models/eft/quests/IFailQuestRequestData"; -import { QuestStatus } from "@spt-aki/models/enums/QuestStatus"; -import { IQuestConfig } from "@spt-aki/models/spt/config/IQuestConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocaleService } from "@spt-aki/services/LocaleService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { MailSendService } from "@spt-aki/services/MailSendService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { DialogueHelper } from "@spt/helpers/DialogueHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PaymentHelper } from "@spt/helpers/PaymentHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { QuestConditionHelper } from "@spt/helpers/QuestConditionHelper"; +import { RagfairServerHelper } from "@spt/helpers/RagfairServerHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Common, IQuestStatus } from "@spt/models/eft/common/tables/IBotBase"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IQuest, IQuestCondition, IQuestReward } from "@spt/models/eft/common/tables/IQuest"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IAcceptQuestRequestData } from "@spt/models/eft/quests/IAcceptQuestRequestData"; +import { IFailQuestRequestData } from "@spt/models/eft/quests/IFailQuestRequestData"; +import { QuestStatus } from "@spt/models/enums/QuestStatus"; +import { IQuestConfig } from "@spt/models/spt/config/IQuestConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocaleService } from "@spt/services/LocaleService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { MailSendService } from "@spt/services/MailSendService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class QuestHelper { protected logger: ILogger; - protected jsonUtil: JsonUtil; protected timeUtil: TimeUtil; protected hashUtil: HashUtil; protected itemHelper: ItemHelper; + protected databaseService: DatabaseService; protected questConditionHelper: QuestConditionHelper; protected eventOutputHolder: EventOutputHolder; - protected databaseServer: DatabaseServer; protected localeService: LocaleService; protected ragfairServerHelper: RagfairServerHelper; protected dialogueHelper: DialogueHelper; protected profileHelper: ProfileHelper; protected paymentHelper: PaymentHelper; protected localisationService: LocalisationService; + protected seasonalEventService: SeasonalEventService; protected traderHelper: TraderHelper; + protected presetHelper: PresetHelper; protected mailSendService: MailSendService; protected configServer: ConfigServer; + protected cloner: ICloner; protected questConfig: IQuestConfig; - constructor(logger: ILogger, jsonUtil: JsonUtil, timeUtil: TimeUtil, hashUtil: HashUtil, itemHelper: ItemHelper, questConditionHelper: QuestConditionHelper, eventOutputHolder: EventOutputHolder, databaseServer: DatabaseServer, localeService: LocaleService, ragfairServerHelper: RagfairServerHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, traderHelper: TraderHelper, mailSendService: MailSendService, configServer: ConfigServer); + constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseService: DatabaseService, questConditionHelper: QuestConditionHelper, eventOutputHolder: EventOutputHolder, localeService: LocaleService, ragfairServerHelper: RagfairServerHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, seasonalEventService: SeasonalEventService, traderHelper: TraderHelper, presetHelper: PresetHelper, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); /** * Get status of a quest in player profile by its id * @param pmcData Profile to search @@ -57,7 +61,7 @@ export declare class QuestHelper { * @param condition Quest condition * @returns true if player level is greater than or equal to quest */ - doesPlayerLevelFulfilCondition(playerLevel: number, condition: AvailableForConditions): boolean; + doesPlayerLevelFulfilCondition(playerLevel: number, condition: IQuestCondition): boolean; /** * Get the quests found in both arrays (inner join) * @param before Array of quests #1 @@ -84,28 +88,34 @@ export declare class QuestHelper { * @param profile Player profile * @returns true if loyalty is high enough to fulfill quest requirement */ - traderLoyaltyLevelRequirementCheck(questProperties: AvailableForProps, profile: IPmcData): boolean; + traderLoyaltyLevelRequirementCheck(questProperties: IQuestCondition, profile: IPmcData): boolean; /** * Check if trader has sufficient standing to fulfill quest requirement * @param questProperties Quest props * @param profile Player profile * @returns true if standing is high enough to fulfill quest requirement */ - traderStandingRequirementCheck(questProperties: AvailableForProps, profile: IPmcData): boolean; + traderStandingRequirementCheck(questProperties: IQuestCondition, profile: IPmcData): boolean; protected compareAvailableForValues(current: number, required: number, compareMethod: string): boolean; /** - * take reward item from quest and set FiR status + fix stack sizes + fix mod Ids - * @param reward Reward item to fix + * Take reward item from quest and set FiR status + fix stack sizes + fix mod Ids + * @param questReward Reward item to fix * @returns Fixed rewards */ - protected processReward(reward: Reward): Reward[]; + protected processReward(questReward: IQuestReward): Item[]; + /** + * Add missing mod items to a quest armor reward + * @param originalRewardRootItem Original armor reward item from IQuestReward.items object + * @param questReward Armor reward from quest + */ + protected generateArmorRewardChildSlots(originalRewardRootItem: Item, questReward: IQuestReward): void; /** * Gets a flat list of reward items for the given quest at a specific state (e.g. Fail/Success) * @param quest quest to get rewards for * @param status Quest status that holds the items (Started, Success, Fail) * @returns array of items with the correct maxStack */ - getQuestRewardItems(quest: IQuest, status: QuestStatus): Reward[]; + getQuestRewardItems(quest: IQuest, status: QuestStatus): Item[]; /** * Look up quest in db by accepted quest id and construct a profile-ready object ready to store in profile * @param pmcData Player profile @@ -120,6 +130,18 @@ export declare class QuestHelper { * @returns Quests accessible to player incuding newly unlocked quests now quest (startedQuestId) was started */ getNewlyAccessibleQuestsWhenStartingQuest(startedQuestId: string, sessionID: string): IQuest[]; + /** + * Should a seasonal/event quest be shown to the player + * @param questId Quest to check + * @returns true = show to player + */ + showEventQuestToPlayer(questId: string): boolean; + /** + * Is the quest for the opposite side the player is on + * @param playerSide Player side (usec/bear) + * @param questId QuestId to check + */ + questIsForOtherSide(playerSide: string, questId: string): boolean; /** * Get quests that can be shown to player after failing a quest * @param failedQuestId Id of the quest failed by player @@ -130,11 +152,11 @@ export declare class QuestHelper { /** * Adjust quest money rewards by passed in multiplier * @param quest Quest to multiple money rewards - * @param multiplier Value to adjust money rewards by + * @param bonusPercent Value to adjust money rewards by * @param questStatus Status of quest to apply money boost to rewards of * @returns Updated quest */ - applyMoneyBoost(quest: IQuest, multiplier: number, questStatus: QuestStatus): IQuest; + applyMoneyBoost(quest: IQuest, bonusPercent: number, questStatus: QuestStatus): IQuest; /** * Sets the item stack to new value, or delete the item if value <= 0 * // TODO maybe merge this function and the one from customization @@ -170,9 +192,8 @@ export declare class QuestHelper { * @param failRequest Fail quest request data * @param sessionID Session id * @param output Client output - * @returns Item event router response */ - failQuest(pmcData: IPmcData, failRequest: IFailQuestRequestData, sessionID: string, output?: IItemEventRouterResponse): IItemEventRouterResponse; + failQuest(pmcData: IPmcData, failRequest: IFailQuestRequestData, sessionID: string, output?: IItemEventRouterResponse): void; /** * Get List of All Quests from db * NOT CLONED @@ -222,7 +243,7 @@ export declare class QuestHelper { * @param questResponse Response to send back to client * @returns Array of reward objects */ - applyQuestReward(profileData: IPmcData, questId: string, state: QuestStatus, sessionId: string, questResponse: IItemEventRouterResponse): Reward[]; + applyQuestReward(profileData: IPmcData, questId: string, state: QuestStatus, sessionId: string, questResponse: IItemEventRouterResponse): Item[]; /** * WIP - Find hideout craft id and add to unlockedProductionRecipe array in player profile * also update client response recipeUnlocked array with craft id @@ -232,7 +253,7 @@ export declare class QuestHelper { * @param sessionID Session id * @param response Response to send back to client */ - protected findAndAddHideoutProductionIdToProfile(pmcData: IPmcData, craftUnlockReward: Reward, questDetails: IQuest, sessionID: string, response: IItemEventRouterResponse): void; + protected findAndAddHideoutProductionIdToProfile(pmcData: IPmcData, craftUnlockReward: IQuestReward, questDetails: IQuest, sessionID: string, response: IItemEventRouterResponse): void; /** * Get players money reward bonus from profile * @param pmcData player profile @@ -253,4 +274,16 @@ export declare class QuestHelper { */ addAllQuestsToProfile(pmcProfile: IPmcData, statuses: QuestStatus[]): void; findAndRemoveQuestFromArrayIfExists(questId: string, quests: IQuestStatus[]): void; + /** + * Return a list of quests that would fail when supplied quest is completed + * @param completedQuestId quest completed id + * @returns array of IQuest objects + */ + getQuestsFailedByCompletingQuest(completedQuestId: string): IQuest[]; + /** + * Get the hours a mails items can be collected for by profile type + * @param pmcData Profile to get hours for + * @returns Hours item will be available for + */ + getMailItemRedeemTimeHoursForProfile(pmcData: IPmcData): number; } diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairHelper.d.ts index 55e6fe8..52ca467 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairHelper.d.ts @@ -1,28 +1,28 @@ -import { HandbookHelper } from "@spt-aki/helpers/HandbookHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { TraderAssortHelper } from "@spt-aki/helpers/TraderAssortHelper"; -import { UtilityHelper } from "@spt-aki/helpers/UtilityHelper"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITraderAssort } from "@spt-aki/models/eft/common/tables/ITrader"; -import { ISearchRequestData } from "@spt-aki/models/eft/ragfair/ISearchRequestData"; -import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { RagfairLinkedItemService } from "@spt-aki/services/RagfairLinkedItemService"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; +import { HandbookHelper } from "@spt/helpers/HandbookHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { TraderAssortHelper } from "@spt/helpers/TraderAssortHelper"; +import { UtilityHelper } from "@spt/helpers/UtilityHelper"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITraderAssort } from "@spt/models/eft/common/tables/ITrader"; +import { ISearchRequestData } from "@spt/models/eft/ragfair/ISearchRequestData"; +import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { RagfairLinkedItemService } from "@spt/services/RagfairLinkedItemService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairHelper { protected logger: ILogger; - protected jsonUtil: JsonUtil; protected traderAssortHelper: TraderAssortHelper; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected handbookHelper: HandbookHelper; protected itemHelper: ItemHelper; protected ragfairLinkedItemService: RagfairLinkedItemService; protected utilityHelper: UtilityHelper; protected configServer: ConfigServer; + protected cloner: ICloner; protected ragfairConfig: IRagfairConfig; - constructor(logger: ILogger, jsonUtil: JsonUtil, traderAssortHelper: TraderAssortHelper, databaseServer: DatabaseServer, handbookHelper: HandbookHelper, itemHelper: ItemHelper, ragfairLinkedItemService: RagfairLinkedItemService, utilityHelper: UtilityHelper, configServer: ConfigServer); + constructor(logger: ILogger, traderAssortHelper: TraderAssortHelper, databaseService: DatabaseService, handbookHelper: HandbookHelper, itemHelper: ItemHelper, ragfairLinkedItemService: RagfairLinkedItemService, utilityHelper: UtilityHelper, configServer: ConfigServer, cloner: ICloner); /** * Gets currency TAG from TPL * @param {string} currency @@ -33,7 +33,7 @@ export declare class RagfairHelper { getDisplayableAssorts(sessionID: string): Record; protected getCategoryList(handbookId: string): string[]; /** - * Merges Root Items + * Iterate over array of identical items and merge stack count * Ragfair allows abnormally large stacks. */ mergeStackable(items: Item[]): Item[]; diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairOfferHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairOfferHelper.d.ts index 778d657..b526554 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairOfferHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairOfferHelper.d.ts @@ -1,47 +1,53 @@ -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper"; -import { PresetHelper } from "@spt-aki/helpers/PresetHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { RagfairHelper } from "@spt-aki/helpers/RagfairHelper"; -import { RagfairServerHelper } from "@spt-aki/helpers/RagfairServerHelper"; -import { RagfairSortHelper } from "@spt-aki/helpers/RagfairSortHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITraderAssort } from "@spt-aki/models/eft/common/tables/ITrader"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IAkiProfile } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { IRagfairOffer } from "@spt-aki/models/eft/ragfair/IRagfairOffer"; -import { ISearchRequestData } from "@spt-aki/models/eft/ragfair/ISearchRequestData"; -import { IQuestConfig } from "@spt-aki/models/spt/config/IQuestConfig"; -import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { LocaleService } from "@spt-aki/services/LocaleService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { MailSendService } from "@spt-aki/services/MailSendService"; -import { RagfairOfferService } from "@spt-aki/services/RagfairOfferService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { BotHelper } from "@spt/helpers/BotHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PaymentHelper } from "@spt/helpers/PaymentHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { QuestHelper } from "@spt/helpers/QuestHelper"; +import { RagfairHelper } from "@spt/helpers/RagfairHelper"; +import { RagfairServerHelper } from "@spt/helpers/RagfairServerHelper"; +import { RagfairSortHelper } from "@spt/helpers/RagfairSortHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITraderAssort } from "@spt/models/eft/common/tables/ITrader"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; +import { IRagfairOffer } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ISearchRequestData } from "@spt/models/eft/ragfair/ISearchRequestData"; +import { IQuestConfig } from "@spt/models/spt/config/IQuestConfig"; +import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocaleService } from "@spt/services/LocaleService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { MailSendService } from "@spt/services/MailSendService"; +import { RagfairOfferService } from "@spt/services/RagfairOfferService"; +import { RagfairRequiredItemsService } from "@spt/services/RagfairRequiredItemsService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class RagfairOfferHelper { protected logger: ILogger; protected timeUtil: TimeUtil; protected hashUtil: HashUtil; protected eventOutputHolder: EventOutputHolder; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected traderHelper: TraderHelper; protected saveServer: SaveServer; protected itemHelper: ItemHelper; + protected botHelper: BotHelper; protected paymentHelper: PaymentHelper; protected presetHelper: PresetHelper; protected profileHelper: ProfileHelper; + protected questHelper: QuestHelper; protected ragfairServerHelper: RagfairServerHelper; protected ragfairSortHelper: RagfairSortHelper; protected ragfairHelper: RagfairHelper; protected ragfairOfferService: RagfairOfferService; + protected ragfairRequiredItemsService: RagfairRequiredItemsService; protected localeService: LocaleService; protected localisationService: LocalisationService; protected mailSendService: MailSendService; @@ -49,25 +55,32 @@ export declare class RagfairOfferHelper { protected static goodSoldTemplate: string; protected ragfairConfig: IRagfairConfig; protected questConfig: IQuestConfig; - constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, eventOutputHolder: EventOutputHolder, databaseServer: DatabaseServer, traderHelper: TraderHelper, saveServer: SaveServer, itemHelper: ItemHelper, paymentHelper: PaymentHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, ragfairServerHelper: RagfairServerHelper, ragfairSortHelper: RagfairSortHelper, ragfairHelper: RagfairHelper, ragfairOfferService: RagfairOfferService, localeService: LocaleService, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer); + constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, eventOutputHolder: EventOutputHolder, databaseService: DatabaseService, traderHelper: TraderHelper, saveServer: SaveServer, itemHelper: ItemHelper, botHelper: BotHelper, paymentHelper: PaymentHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, questHelper: QuestHelper, ragfairServerHelper: RagfairServerHelper, ragfairSortHelper: RagfairSortHelper, ragfairHelper: RagfairHelper, ragfairOfferService: RagfairOfferService, ragfairRequiredItemsService: RagfairRequiredItemsService, localeService: LocaleService, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer); /** * Passthrough to ragfairOfferService.getOffers(), get flea offers a player should see * @param searchRequest Data from client * @param itemsToAdd ragfairHelper.filterCategories() * @param traderAssorts Trader assorts - * @param pmcProfile Player profile + * @param pmcData Player profile * @returns Offers the player should see */ - getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, pmcProfile: IPmcData): IRagfairOffer[]; + getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, pmcData: IPmcData): IRagfairOffer[]; + /** + * Get matching offers that require the desired item and filter out offers from non traders if player is below ragfair unlock level + * @param searchRequest Search request from client + * @param pmcDataPlayer profile + * @returns Matching IRagfairOffer objects + */ + getOffersThatRequireItem(searchRequest: ISearchRequestData, pmcData: IPmcData): IRagfairOffer[]; /** * Get offers from flea/traders specifically when building weapon preset * @param searchRequest Search request data * @param itemsToAdd string array of item tpls to search for * @param traderAssorts All trader assorts player can access/buy - * @param pmcProfile Player profile + * @param pmcData Player profile * @returns IRagfairOffer array */ - getOffersForBuild(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, pmcProfile: IPmcData): IRagfairOffer[]; + getOffersForBuild(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, pmcData: IPmcData): IRagfairOffer[]; /** * Check if offer is from trader standing the player does not have * @param offer Offer to check @@ -107,12 +120,18 @@ export declare class RagfairOfferHelper { * @returns true = complete */ processOffersOnProfile(sessionID: string): boolean; + /** + * Count up all rootitem StackObjectsCount properties of an array of items + * @param itemsInInventoryToList items to sum up + * @returns Total count + */ + getTotalStackCountSize(itemsInInventoryToList: Item[][]): number; /** * Add amount to players ragfair rating * @param sessionId Profile to update * @param amountToIncrementBy Raw amount to add to players ragfair rating (excluding the reputation gain multiplier) */ - increaseProfileRagfairRating(profile: IAkiProfile, amountToIncrementBy: number): void; + increaseProfileRagfairRating(profile: ISptProfile, amountToIncrementBy: number): void; /** * Return all offers a player has listed on a desired profile * @param sessionID Session id @@ -140,6 +159,21 @@ export declare class RagfairOfferHelper { * @returns Localised message text */ protected getLocalisedOfferSoldMessage(itemTpl: string, boughtAmount: number): string; + /** + * Check an offer passes the various search criteria the player requested + * @param searchRequest + * @param offer + * @param pmcData + * @returns True + */ + protected passesSearchFilterCriteria(searchRequest: ISearchRequestData, offer: IRagfairOffer, pmcData: IPmcData): boolean; + /** + * Check that the passed in offer item is functional + * @param offerRootItem The root item of the offer + * @param offer The flea offer + * @returns True if the given item is functional + */ + isItemFunctional(offerRootItem: Item, offer: IRagfairOffer): boolean; /** * Should a ragfair offer be visible to the player * @param searchRequest Search request @@ -149,7 +183,8 @@ export declare class RagfairOfferHelper { * @param pmcProfile Player profile * @returns True = should be shown to player */ - isDisplayableOffer(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, offer: IRagfairOffer, pmcProfile: IPmcData): boolean; + isDisplayableOffer(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, offer: IRagfairOffer, pmcProfile: IPmcData, playerIsFleaBanned?: boolean): boolean; + isDisplayableOfferThatNeedsItem(searchRequest: ISearchRequestData, offer: IRagfairOffer): boolean; /** * Does the passed in item have a condition property * @param item Item to check diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairSellHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairSellHelper.d.ts index 7a4de8a..fc9e4b5 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairSellHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairSellHelper.d.ts @@ -1,18 +1,18 @@ -import { SellResult } from "@spt-aki/models/eft/ragfair/IRagfairOffer"; -import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { SellResult } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class RagfairSellHelper { protected logger: ILogger; protected randomUtil: RandomUtil; protected timeUtil: TimeUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected configServer: ConfigServer; protected ragfairConfig: IRagfairConfig; - constructor(logger: ILogger, randomUtil: RandomUtil, timeUtil: TimeUtil, databaseServer: DatabaseServer, configServer: ConfigServer); + constructor(logger: ILogger, randomUtil: RandomUtil, timeUtil: TimeUtil, databaseService: DatabaseService, configServer: ConfigServer); /** * Get the percent chance to sell an item based on its average listed price vs player chosen listing price * @param averageOfferPriceRub Price of average offer in roubles @@ -25,7 +25,8 @@ export declare class RagfairSellHelper { * Get array of item count and sell time (empty array = no sell) * @param sellChancePercent chance item will sell * @param itemSellCount count of items to sell + * @param sellInOneGo All items listed get sold at once * @returns Array of purchases of item(s) listed */ - rollForSale(sellChancePercent: number, itemSellCount: number): SellResult[]; + rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): SellResult[]; } diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairServerHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairServerHelper.d.ts index 4d2d4c4..927caf5 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairServerHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairServerHelper.d.ts @@ -1,46 +1,41 @@ -import { DialogueHelper } from "@spt-aki/helpers/DialogueHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { MemberCategory } from "@spt-aki/models/enums/MemberCategory"; -import { IQuestConfig } from "@spt-aki/models/spt/config/IQuestConfig"; -import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { ItemFilterService } from "@spt-aki/services/ItemFilterService"; -import { LocaleService } from "@spt-aki/services/LocaleService"; -import { MailSendService } from "@spt-aki/services/MailSendService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { IQuestConfig } from "@spt/models/spt/config/IQuestConfig"; +import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { ItemFilterService } from "@spt/services/ItemFilterService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { MailSendService } from "@spt/services/MailSendService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; /** * Helper class for common ragfair server actions */ export declare class RagfairServerHelper { protected logger: ILogger; protected randomUtil: RandomUtil; - protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected saveServer: SaveServer; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected profileHelper: ProfileHelper; protected itemHelper: ItemHelper; - protected localeService: LocaleService; - protected dialogueHelper: DialogueHelper; protected traderHelper: TraderHelper; - protected jsonUtil: JsonUtil; protected mailSendService: MailSendService; + protected localisationService: LocalisationService; protected itemFilterService: ItemFilterService; protected configServer: ConfigServer; + protected cloner: ICloner; protected ragfairConfig: IRagfairConfig; protected questConfig: IQuestConfig; protected static goodsReturnedTemplate: string; - constructor(logger: ILogger, randomUtil: RandomUtil, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, databaseServer: DatabaseServer, profileHelper: ProfileHelper, itemHelper: ItemHelper, localeService: LocaleService, dialogueHelper: DialogueHelper, traderHelper: TraderHelper, jsonUtil: JsonUtil, mailSendService: MailSendService, itemFilterService: ItemFilterService, configServer: ConfigServer); + constructor(logger: ILogger, randomUtil: RandomUtil, timeUtil: TimeUtil, saveServer: SaveServer, databaseService: DatabaseService, profileHelper: ProfileHelper, itemHelper: ItemHelper, traderHelper: TraderHelper, mailSendService: MailSendService, localisationService: LocalisationService, itemFilterService: ItemFilterService, configServer: ConfigServer, cloner: ICloner); /** * Is item valid / on blacklist / quest item * @param itemDetails @@ -53,18 +48,18 @@ export declare class RagfairServerHelper { * @returns True if its blacklsited */ protected isItemOnCustomFleaBlacklist(itemTemplateId: string): boolean; + /** + * Is supplied parent id on the ragfair custom item category blacklist + * @param parentId Parent Id to check is blacklisted + * @returns true if blacklisted + */ + protected isItemCategoryOnCustomFleaBlacklist(itemParentId: string): boolean; /** * is supplied id a trader * @param traderId * @returns True if id was a trader */ isTrader(traderId: string): boolean; - /** - * Is this user id the logged in player - * @param userId Id to test - * @returns True is the current player - */ - isPlayer(userId: string): boolean; /** * Send items back to player * @param sessionID Player to send items to @@ -77,13 +72,6 @@ export declare class RagfairServerHelper { * @returns currency tpl */ getDynamicOfferCurrency(): string; - getMemberType(userID: string): MemberCategory; - /** - * Get a player or traders nickname from their profile by their user id - * @param userID Sessionid/userid - * @returns Nickname of individual - */ - getNickname(userID: string): string; /** * Given a preset id from globals.json, return an array of items[] with unique ids * @param item Preset item @@ -96,11 +84,4 @@ export declare class RagfairServerHelper { * @returns */ getPresetItemsByTpl(item: Item): Item[]; - /** - * Generate new unique ids for child items while preserving hierarchy - * @param rootItem Base/primary item of preset - * @param preset Primary item + children of primary item - * @returns Item array with new IDs - */ - reparentPresets(rootItem: Item, preset: Item[]): Item[]; } diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairSortHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairSortHelper.d.ts index 5bd8f96..9971559 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairSortHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairSortHelper.d.ts @@ -1,7 +1,7 @@ -import { IRagfairOffer } from "@spt-aki/models/eft/ragfair/IRagfairOffer"; -import { RagfairSort } from "@spt-aki/models/enums/RagfairSort"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocaleService } from "@spt-aki/services/LocaleService"; +import { IRagfairOffer } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { RagfairSort } from "@spt/models/enums/RagfairSort"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { LocaleService } from "@spt/services/LocaleService"; export declare class RagfairSortHelper { protected databaseServer: DatabaseServer; protected localeService: LocaleService; @@ -15,6 +15,7 @@ export declare class RagfairSortHelper { */ sortOffers(offers: IRagfairOffer[], type: RagfairSort, direction?: number): IRagfairOffer[]; protected sortOffersByID(a: IRagfairOffer, b: IRagfairOffer): number; + protected sortOffersByBarter(a: IRagfairOffer, b: IRagfairOffer): number; protected sortOffersByRating(a: IRagfairOffer, b: IRagfairOffer): number; protected sortOffersByName(a: IRagfairOffer, b: IRagfairOffer): number; /** diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/RepairHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/RepairHelper.d.ts index 9ef0eaa..99a21da 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/RepairHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/RepairHelper.d.ts @@ -1,19 +1,19 @@ -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITemplateItem, Props } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { IRepairConfig } from "@spt-aki/models/spt/config/IRepairConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem, Props } from "@spt/models/eft/common/tables/ITemplateItem"; +import { IRepairConfig } from "@spt/models/spt/config/IRepairConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class RepairHelper { protected logger: ILogger; - protected jsonUtil: JsonUtil; protected randomUtil: RandomUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected configServer: ConfigServer; + protected cloner: ICloner; protected repairConfig: IRepairConfig; - constructor(logger: ILogger, jsonUtil: JsonUtil, randomUtil: RandomUtil, databaseServer: DatabaseServer, configServer: ConfigServer); + constructor(logger: ILogger, randomUtil: RandomUtil, databaseService: DatabaseService, configServer: ConfigServer, cloner: ICloner); /** * Alter an items durability after a repair by trader/repair kit * @param itemToRepair item to update durability details diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/RepeatableQuestHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/RepeatableQuestHelper.d.ts index 6e0290d..d92657e 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/RepeatableQuestHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/RepeatableQuestHelper.d.ts @@ -1,14 +1,14 @@ -import { IEliminationConfig, IQuestConfig, IRepeatableQuestConfig } from "@spt-aki/models/spt/config/IQuestConfig"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { MathUtil } from "@spt-aki/utils/MathUtil"; -import { ProbabilityObject, ProbabilityObjectArray } from "@spt-aki/utils/RandomUtil"; +import { IEliminationConfig, IQuestConfig, IRepeatableQuestConfig } from "@spt/models/spt/config/IQuestConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { MathUtil } from "@spt/utils/MathUtil"; +import { ProbabilityObject, ProbabilityObjectArray } from "@spt/utils/RandomUtil"; export declare class RepeatableQuestHelper { protected mathUtil: MathUtil; - protected jsonUtil: JsonUtil; protected configServer: ConfigServer; + protected cloner: ICloner; protected questConfig: IQuestConfig; - constructor(mathUtil: MathUtil, jsonUtil: JsonUtil, configServer: ConfigServer); + constructor(mathUtil: MathUtil, configServer: ConfigServer, cloner: ICloner); /** * Get the relevant elimination config based on the current players PMC level * @param pmcLevel Level of PMC character diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/SecureContainerHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/SecureContainerHelper.d.ts index 36b227c..b6bcffe 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/SecureContainerHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/SecureContainerHelper.d.ts @@ -1,5 +1,5 @@ -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { Item } from "@spt/models/eft/common/tables/IItem"; export interface OwnerInventoryItems { from: Item[]; to: Item[]; diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/TradeHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/TradeHelper.d.ts index bf8360d..f994fda 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/TradeHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/TradeHelper.d.ts @@ -1,19 +1,24 @@ -import { InventoryHelper } from "@spt-aki/helpers/InventoryHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Item, Upd } from "@spt-aki/models/eft/common/tables/IItem"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IProcessBuyTradeRequestData } from "@spt-aki/models/eft/trade/IProcessBuyTradeRequestData"; -import { IProcessSellTradeRequestData } from "@spt-aki/models/eft/trade/IProcessSellTradeRequestData"; -import { ITraderConfig } from "@spt-aki/models/spt/config/ITraderConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { RagfairServer } from "@spt-aki/servers/RagfairServer"; -import { FenceService } from "@spt-aki/services/FenceService"; -import { PaymentService } from "@spt-aki/services/PaymentService"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { TraderAssortHelper } from "@spt/helpers/TraderAssortHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IProcessBuyTradeRequestData } from "@spt/models/eft/trade/IProcessBuyTradeRequestData"; +import { IProcessSellTradeRequestData } from "@spt/models/eft/trade/IProcessSellTradeRequestData"; +import { IInventoryConfig } from "@spt/models/spt/config/IInventoryConfig"; +import { ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { RagfairServer } from "@spt/servers/RagfairServer"; +import { FenceService } from "@spt/services/FenceService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { PaymentService } from "@spt/services/PaymentService"; +import { TraderPurchasePersisterService } from "@spt/services/TraderPurchasePersisterService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class TradeHelper { protected logger: ILogger; protected eventOutputHolder: EventOutputHolder; @@ -21,43 +26,44 @@ export declare class TradeHelper { protected itemHelper: ItemHelper; protected paymentService: PaymentService; protected fenceService: FenceService; + protected localisationService: LocalisationService; protected httpResponse: HttpResponseUtil; protected inventoryHelper: InventoryHelper; protected ragfairServer: RagfairServer; + protected traderAssortHelper: TraderAssortHelper; + protected traderPurchasePersisterService: TraderPurchasePersisterService; protected configServer: ConfigServer; + protected cloner: ICloner; protected traderConfig: ITraderConfig; - constructor(logger: ILogger, eventOutputHolder: EventOutputHolder, traderHelper: TraderHelper, itemHelper: ItemHelper, paymentService: PaymentService, fenceService: FenceService, httpResponse: HttpResponseUtil, inventoryHelper: InventoryHelper, ragfairServer: RagfairServer, configServer: ConfigServer); + protected inventoryConfig: IInventoryConfig; + constructor(logger: ILogger, eventOutputHolder: EventOutputHolder, traderHelper: TraderHelper, itemHelper: ItemHelper, paymentService: PaymentService, fenceService: FenceService, localisationService: LocalisationService, httpResponse: HttpResponseUtil, inventoryHelper: InventoryHelper, ragfairServer: RagfairServer, traderAssortHelper: TraderAssortHelper, traderPurchasePersisterService: TraderPurchasePersisterService, configServer: ConfigServer, cloner: ICloner); /** * Buy item from flea or trader * @param pmcData Player profile * @param buyRequestData data from client * @param sessionID Session id * @param foundInRaid Should item be found in raid - * @param upd optional item details used when buying from flea - * @returns + * @param output IItemEventRouterResponse + * @returns IItemEventRouterResponse */ - buyItem(pmcData: IPmcData, buyRequestData: IProcessBuyTradeRequestData, sessionID: string, foundInRaid: boolean, upd: Upd): IItemEventRouterResponse; + buyItem(pmcData: IPmcData, buyRequestData: IProcessBuyTradeRequestData, sessionID: string, foundInRaid: boolean, output: IItemEventRouterResponse): void; /** * Sell item to trader * @param profileWithItemsToSell Profile to remove items from * @param profileToReceiveMoney Profile to accept the money for selling item * @param sellRequest Request data * @param sessionID Session id - * @returns IItemEventRouterResponse + * @param output IItemEventRouterResponse */ - sellItem(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData, sessionID: string): IItemEventRouterResponse; - /** - * Increment the assorts buy count by number of items purchased - * Show error on screen if player attempts to buy more than what the buy max allows - * @param assortBeingPurchased assort being bought - * @param itemsPurchasedCount number of items being bought - */ - protected incrementAssortBuyCount(assortBeingPurchased: Item, itemsPurchasedCount: number): void; + sellItem(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData, sessionID: string, output: IItemEventRouterResponse): void; /** * Traders allow a limited number of purchases per refresh cycle (default 60 mins) + * @param sessionId Session id + * @param pmcData Profile making the purchase + * @param traderId Trader assort is purchased from * @param assortBeingPurchased the item from trader being bought * @param assortId Id of assort being purchased - * @param count How many are being bought + * @param count How many of the item are being bought */ - protected checkPurchaseIsWithinTraderItemLimit(assortBeingPurchased: Item, assortId: string, count: number): void; + protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: Item, assortId: string, count: number): void; } diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/TraderAssortHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/TraderAssortHelper.d.ts index 0b6effb..8f8f802 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/TraderAssortHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/TraderAssortHelper.d.ts @@ -1,28 +1,27 @@ -import { RagfairAssortGenerator } from "@spt-aki/generators/RagfairAssortGenerator"; -import { RagfairOfferGenerator } from "@spt-aki/generators/RagfairOfferGenerator"; -import { AssortHelper } from "@spt-aki/helpers/AssortHelper"; -import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITrader, ITraderAssort } from "@spt-aki/models/eft/common/tables/ITrader"; -import { ITraderConfig } from "@spt-aki/models/spt/config/ITraderConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { FenceService } from "@spt-aki/services/FenceService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { TraderAssortService } from "@spt-aki/services/TraderAssortService"; -import { TraderPurchasePersisterService } from "@spt-aki/services/TraderPurchasePersisterService"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { MathUtil } from "@spt-aki/utils/MathUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { RagfairAssortGenerator } from "@spt/generators/RagfairAssortGenerator"; +import { RagfairOfferGenerator } from "@spt/generators/RagfairOfferGenerator"; +import { AssortHelper } from "@spt/helpers/AssortHelper"; +import { PaymentHelper } from "@spt/helpers/PaymentHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITrader, ITraderAssort } from "@spt/models/eft/common/tables/ITrader"; +import { ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { FenceService } from "@spt/services/FenceService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { TraderAssortService } from "@spt/services/TraderAssortService"; +import { TraderPurchasePersisterService } from "@spt/services/TraderPurchasePersisterService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { MathUtil } from "@spt/utils/MathUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class TraderAssortHelper { protected logger: ILogger; - protected jsonUtil: JsonUtil; protected mathUtil: MathUtil; protected timeUtil: TimeUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected profileHelper: ProfileHelper; protected assortHelper: AssortHelper; protected paymentHelper: PaymentHelper; @@ -34,10 +33,11 @@ export declare class TraderAssortHelper { protected traderHelper: TraderHelper; protected fenceService: FenceService; protected configServer: ConfigServer; + protected cloner: ICloner; protected traderConfig: ITraderConfig; protected mergedQuestAssorts: Record>; protected createdMergedQuestAssorts: boolean; - constructor(logger: ILogger, jsonUtil: JsonUtil, mathUtil: MathUtil, timeUtil: TimeUtil, databaseServer: DatabaseServer, profileHelper: ProfileHelper, assortHelper: AssortHelper, paymentHelper: PaymentHelper, ragfairAssortGenerator: RagfairAssortGenerator, ragfairOfferGenerator: RagfairOfferGenerator, traderAssortService: TraderAssortService, localisationService: LocalisationService, traderPurchasePersisterService: TraderPurchasePersisterService, traderHelper: TraderHelper, fenceService: FenceService, configServer: ConfigServer); + constructor(logger: ILogger, mathUtil: MathUtil, timeUtil: TimeUtil, databaseService: DatabaseService, profileHelper: ProfileHelper, assortHelper: AssortHelper, paymentHelper: PaymentHelper, ragfairAssortGenerator: RagfairAssortGenerator, ragfairOfferGenerator: RagfairOfferGenerator, traderAssortService: TraderAssortService, localisationService: LocalisationService, traderPurchasePersisterService: TraderPurchasePersisterService, traderHelper: TraderHelper, fenceService: FenceService, configServer: ConfigServer, cloner: ICloner); /** * Get a traders assorts * Can be used for returning ragfair / fence assorts @@ -48,6 +48,17 @@ export declare class TraderAssortHelper { * @returns a traders' assorts */ getAssort(sessionId: string, traderId: string, flea?: boolean): ITraderAssort; + /** + * Given the blacklist provided, remove root items from assort + * @param assortToFilter Trader assort to modify + * @param itemsTplsToRemove Item TPLs the assort should not have + */ + protected removeItemsFromAssort(assortToFilter: ITraderAssort, itemsTplsToRemove: string[]): void; + /** + * Reset every traders root item `BuyRestrictionCurrent` property to 0 + * @param assortItems Items to adjust + */ + protected resetBuyRestrictionCurrentValue(assortItems: Item[]): void; /** * Create a dict of all assort id = quest id mappings used to work out what items should be shown to player based on the quests they've started/completed/failed */ diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/TraderHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/TraderHelper.d.ts index 8d8da00..52c0d9b 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/TraderHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/TraderHelper.d.ts @@ -1,25 +1,24 @@ -import { HandbookHelper } from "@spt-aki/helpers/HandbookHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ProfileTraderTemplate } from "@spt-aki/models/eft/common/tables/IProfileTemplate"; -import { ITraderAssort, ITraderBase, LoyaltyLevel } from "@spt-aki/models/eft/common/tables/ITrader"; -import { Traders } from "@spt-aki/models/enums/Traders"; -import { ITraderConfig } from "@spt-aki/models/spt/config/ITraderConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { FenceService } from "@spt-aki/services/FenceService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { PlayerService } from "@spt-aki/services/PlayerService"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { HandbookHelper } from "@spt/helpers/HandbookHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ProfileTraderTemplate } from "@spt/models/eft/common/tables/IProfileTemplate"; +import { ITraderAssort, ITraderBase, LoyaltyLevel } from "@spt/models/eft/common/tables/ITrader"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; +import { Traders } from "@spt/models/enums/Traders"; +import { ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { FenceService } from "@spt/services/FenceService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { PlayerService } from "@spt/services/PlayerService"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class TraderHelper { protected logger: ILogger; - protected databaseServer: DatabaseServer; - protected saveServer: SaveServer; + protected databaseService: DatabaseService; protected profileHelper: ProfileHelper; protected handbookHelper: HandbookHelper; protected itemHelper: ItemHelper; @@ -31,10 +30,8 @@ export declare class TraderHelper { protected configServer: ConfigServer; protected traderConfig: ITraderConfig; /** Dictionary of item tpl and the highest trader sell rouble price */ - protected highestTraderPriceItems: Record; - /** Dictionary of item tpl and the highest trader buy back rouble price */ - protected highestTraderBuyPriceItems: Record; - constructor(logger: ILogger, databaseServer: DatabaseServer, saveServer: SaveServer, profileHelper: ProfileHelper, handbookHelper: HandbookHelper, itemHelper: ItemHelper, playerService: PlayerService, localisationService: LocalisationService, fenceService: FenceService, timeUtil: TimeUtil, randomUtil: RandomUtil, configServer: ConfigServer); + protected highestTraderPriceItems?: Record; + constructor(logger: ILogger, databaseService: DatabaseService, profileHelper: ProfileHelper, handbookHelper: HandbookHelper, itemHelper: ItemHelper, playerService: PlayerService, localisationService: LocalisationService, fenceService: FenceService, timeUtil: TimeUtil, randomUtil: RandomUtil, configServer: ConfigServer); /** * Get a trader base object, update profile to reflect players current standing in profile * when trader not found in profile @@ -42,7 +39,7 @@ export declare class TraderHelper { * @param sessionID Players id * @returns Trader base */ - getTrader(traderID: string, sessionID: string): ITraderBase; + getTrader(traderID: string, sessionID: string): ITraderBase | undefined; /** * Get all assort data for a particular trader * @param traderId Trader to get assorts for @@ -55,11 +52,11 @@ export declare class TraderHelper { * @param assortId Id of assort to find * @returns Item object */ - getTraderAssortItemByAssortId(traderId: string, assortId: string): Item; + getTraderAssortItemByAssortId(traderId: string, assortId: string): Item | undefined; /** * 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 - * @param sessionID session id + * @param sessionID session id of player * @param traderID trader id to reset */ resetTrader(sessionID: string, traderID: string): void; @@ -70,17 +67,23 @@ export declare class TraderHelper { * @returns Standing value */ protected getStartingStanding(traderId: string, rawProfileTemplate: ProfileTraderTemplate): number; + /** + * Add an array of suit ids to a profiles suit array, no duplicates + * @param fullProfile Profile to add to + * @param suitIds Suit Ids to add + */ + protected addSuitsToProfile(fullProfile: ISptProfile, suitIds: string[]): void; /** * Alter a traders unlocked status * @param traderId Trader to alter * @param status New status to use - * @param sessionId Session id + * @param sessionId Session id of player */ setTraderUnlockedState(traderId: string, status: boolean, sessionId: string): void; /** * Add standing to a trader and level them up if exp goes over level threshold - * @param sessionId Session id - * @param traderId Traders id + * @param sessionId Session id of player + * @param traderId Traders id to add standing to * @param standingToAdd Standing value to add to trader */ addStandingToTrader(sessionId: string, traderId: string, standingToAdd: number): void; @@ -91,10 +94,16 @@ export declare class TraderHelper { * @returns current standing + added standing (clamped if needed) */ protected addStandingValuesTogether(currentStanding: number, standingToAdd: number): number; + /** + * iterate over a profiles traders and ensure they have the correct loyaltyLevel for the player + * @param sessionId Profile to check + */ + validateTraderStandingsAndPlayerLevelForProfile(sessionId: string): void; /** * Calculate traders level based on exp amount and increments level if over threshold - * @param traderID trader to check standing of - * @param pmcData profile to update trader in + * Also validates and updates player level if not correct based on XP value + * @param traderID Trader to check standing of + * @param pmcData Profile to update trader in */ lvlUp(traderID: string, pmcData: IPmcData): void; /** @@ -108,7 +117,7 @@ export declare class TraderHelper { * @param traderId Trader to look up * @returns Time in seconds */ - getTraderUpdateSeconds(traderId: string): number; + getTraderUpdateSeconds(traderId: string): number | undefined; getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel; /** * Store the purchase of an assort from a trader in the player profile @@ -117,11 +126,18 @@ export declare class TraderHelper { */ addTraderPurchasesToPlayerProfile(sessionID: string, newPurchaseDetails: { items: { - item_id: string; + itemId: string; count: number; }[]; - tid: string; - }): void; + traderId: string; + }, itemPurchased: Item): void; + /** + * EoD and Unheard get a 20% bonus to personal trader limit purchases + * @param buyRestrictionMax Existing value from trader item + * @param gameVersion Profiles game version + * @returns buyRestrictionMax value + */ + getAccountTypeAdjustedTraderPurchaseLimit(buyRestrictionMax: number, gameVersion: string): number; /** * Get the highest rouble price for an item from traders * UNUSED @@ -140,7 +156,7 @@ export declare class TraderHelper { * @param traderId Traders id * @returns Traders key */ - getTraderById(traderId: string): Traders; + getTraderById(traderId: string): Traders | undefined; /** * Validates that the provided traderEnumValue exists in the Traders enum. If the value is valid, it returns the * same enum value, effectively serving as a trader ID; otherwise, it logs an error and returns an empty string. diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/WeightedRandomHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/WeightedRandomHelper.d.ts index ab42805..f3a34f3 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/WeightedRandomHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/WeightedRandomHelper.d.ts @@ -34,4 +34,11 @@ export declare class WeightedRandomHelper { item: any; index: number; }; + /** + * Find the greated common divisor of all weights and use it on the passed in dictionary + * @param weightedDict values to reduce + */ + reduceWeightValues(weightedDict: Record): void; + protected commonDivisor(numbers: number[]): number; + protected gcd(a: number, b: number): number; } diff --git a/TypeScript/23CustomAbstractChatBot/types/ide/BleedingEdgeModsEntry.d.ts b/TypeScript/23CustomAbstractChatBot/types/ide/BleedingEdgeModsEntry.d.ts new file mode 100644 index 0000000..62f714e --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/ide/BleedingEdgeModsEntry.d.ts @@ -0,0 +1,2 @@ +import "reflect-metadata"; +import "source-map-support/register"; diff --git a/TypeScript/23CustomAbstractChatBot/types/loaders/BundleLoader.d.ts b/TypeScript/23CustomAbstractChatBot/types/loaders/BundleLoader.d.ts index 8e24c5a..e270988 100644 --- a/TypeScript/23CustomAbstractChatBot/types/loaders/BundleLoader.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/loaders/BundleLoader.d.ts @@ -1,33 +1,35 @@ -import { HttpServerHelper } from "@spt-aki/helpers/HttpServerHelper"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { VFS } from "@spt-aki/utils/VFS"; -declare class BundleInfo { - modPath: string; - key: string; - path: string; - filepath: string; - dependencyKeys: string[]; - constructor(modpath: string, bundle: any, bundlePath: string, bundleFilepath: string); +import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { BundleHashCacheService } from "@spt/services/cache/BundleHashCacheService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { JsonUtil } from "@spt/utils/JsonUtil"; +import { VFS } from "@spt/utils/VFS"; +export declare class BundleInfo { + modpath: string; + filename: string; + crc: number; + dependencies: string[]; + constructor(modpath: string, bundle: BundleManifestEntry, bundleHash: number); } export declare class BundleLoader { protected httpServerHelper: HttpServerHelper; protected vfs: VFS; protected jsonUtil: JsonUtil; + protected bundleHashCacheService: BundleHashCacheService; + protected cloner: ICloner; protected bundles: Record; - constructor(httpServerHelper: HttpServerHelper, vfs: VFS, jsonUtil: JsonUtil); + constructor(httpServerHelper: HttpServerHelper, vfs: VFS, jsonUtil: JsonUtil, bundleHashCacheService: BundleHashCacheService, cloner: ICloner); /** * Handle singleplayer/bundles */ - getBundles(local: boolean): BundleInfo[]; - getBundle(key: string, local: boolean): BundleInfo; + getBundles(): BundleInfo[]; + getBundle(key: string): BundleInfo; addBundles(modpath: string): void; addBundle(key: string, b: BundleInfo): void; } export interface BundleManifest { - manifest: Array; + manifest: BundleManifestEntry[]; } export interface BundleManifestEntry { key: string; - path: string; + dependencyKeys: string[]; } -export {}; diff --git a/TypeScript/23CustomAbstractChatBot/types/loaders/ModLoadOrder.d.ts b/TypeScript/23CustomAbstractChatBot/types/loaders/ModLoadOrder.d.ts index 2d03dc1..039f648 100644 --- a/TypeScript/23CustomAbstractChatBot/types/loaders/ModLoadOrder.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/loaders/ModLoadOrder.d.ts @@ -1,6 +1,6 @@ -import { IPackageJsonData } from "@spt-aki/models/spt/mod/IPackageJsonData"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; +import { IPackageJsonData } from "@spt/models/spt/mod/IPackageJsonData"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { LocalisationService } from "@spt/services/LocalisationService"; export declare class ModLoadOrder { protected logger: ILogger; protected localisationService: LocalisationService; diff --git a/TypeScript/23CustomAbstractChatBot/types/loaders/ModTypeCheck.d.ts b/TypeScript/23CustomAbstractChatBot/types/loaders/ModTypeCheck.d.ts index fb4912e..f66ec45 100644 --- a/TypeScript/23CustomAbstractChatBot/types/loaders/ModTypeCheck.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/loaders/ModTypeCheck.d.ts @@ -1,40 +1,40 @@ -import { IPostAkiLoadMod } from "@spt-aki/models/external/IPostAkiLoadMod"; -import { IPostAkiLoadModAsync } from "@spt-aki/models/external/IPostAkiLoadModAsync"; -import { IPostDBLoadMod } from "@spt-aki/models/external/IPostDBLoadMod"; -import { IPostDBLoadModAsync } from "@spt-aki/models/external/IPostDBLoadModAsync"; -import { IPreAkiLoadMod } from "@spt-aki/models/external/IPreAkiLoadMod"; -import { IPreAkiLoadModAsync } from "@spt-aki/models/external/IPreAkiLoadModAsync"; +import { IPostDBLoadMod } from "@spt/models/external/IPostDBLoadMod"; +import { IPostDBLoadModAsync } from "@spt/models/external/IPostDBLoadModAsync"; +import { IPostSptLoadMod } from "@spt/models/external/IPostSptLoadMod"; +import { IPostSptLoadModAsync } from "@spt/models/external/IPostSptLoadModAsync"; +import { IPreSptLoadMod } from "@spt/models/external/IPreSptLoadMod"; +import { IPreSptLoadModAsync } from "@spt/models/external/IPreSptLoadModAsync"; export declare class ModTypeCheck { /** - * Use defined safe guard to check if the mod is a IPreAkiLoadMod + * Use defined safe guard to check if the mod is a IPreSptLoadMod * @returns boolean */ - isPreAkiLoad(mod: any): mod is IPreAkiLoadMod; + isPreSptLoad(mod: any): mod is IPreSptLoadMod; /** - * Use defined safe guard to check if the mod is a IPostAkiLoadMod + * Use defined safe guard to check if the mod is a IPostSptLoadMod * @returns boolean */ - isPostAkiLoad(mod: any): mod is IPostAkiLoadMod; + isPostSptLoad(mod: any): mod is IPostSptLoadMod; /** * Use defined safe guard to check if the mod is a IPostDBLoadMod * @returns boolean */ - isPostDBAkiLoad(mod: any): mod is IPostDBLoadMod; + isPostDBLoad(mod: any): mod is IPostDBLoadMod; /** - * Use defined safe guard to check if the mod is a IPreAkiLoadModAsync + * Use defined safe guard to check if the mod is a IPreSptLoadModAsync * @returns boolean */ - isPreAkiLoadAsync(mod: any): mod is IPreAkiLoadModAsync; + isPreSptLoadAsync(mod: any): mod is IPreSptLoadModAsync; /** - * Use defined safe guard to check if the mod is a IPostAkiLoadModAsync + * Use defined safe guard to check if the mod is a IPostSptLoadModAsync * @returns boolean */ - isPostAkiLoadAsync(mod: any): mod is IPostAkiLoadModAsync; + isPostSptLoadAsync(mod: any): mod is IPostSptLoadModAsync; /** * Use defined safe guard to check if the mod is a IPostDBLoadModAsync * @returns boolean */ - isPostDBAkiLoadAsync(mod: any): mod is IPostDBLoadModAsync; + isPostDBLoadAsync(mod: any): mod is IPostDBLoadModAsync; /** * Checks for mod to be compatible with 3.X+ * @returns boolean diff --git a/TypeScript/23CustomAbstractChatBot/types/loaders/PostAkiModLoader.d.ts b/TypeScript/23CustomAbstractChatBot/types/loaders/PostAkiModLoader.d.ts deleted file mode 100644 index bd0731a..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/loaders/PostAkiModLoader.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { DependencyContainer } from "tsyringe"; -import { BundleLoader } from "@spt-aki/loaders/BundleLoader"; -import { ModTypeCheck } from "@spt-aki/loaders/ModTypeCheck"; -import { PreAkiModLoader } from "@spt-aki/loaders/PreAkiModLoader"; -import { IModLoader } from "@spt-aki/models/spt/mod/IModLoader"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { VFS } from "@spt-aki/utils/VFS"; -export declare class PostAkiModLoader implements IModLoader { - protected logger: ILogger; - protected bundleLoader: BundleLoader; - protected vfs: VFS; - protected preAkiModLoader: PreAkiModLoader; - protected localisationService: LocalisationService; - protected modTypeCheck: ModTypeCheck; - constructor(logger: ILogger, bundleLoader: BundleLoader, vfs: VFS, preAkiModLoader: PreAkiModLoader, localisationService: LocalisationService, modTypeCheck: ModTypeCheck); - getModPath(mod: string): string; - load(): Promise; - protected executeMods(container: DependencyContainer): Promise; - protected addBundles(): void; -} diff --git a/TypeScript/23CustomAbstractChatBot/types/loaders/PostDBModLoader.d.ts b/TypeScript/23CustomAbstractChatBot/types/loaders/PostDBModLoader.d.ts index d57e321..b0c4bf4 100644 --- a/TypeScript/23CustomAbstractChatBot/types/loaders/PostDBModLoader.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/loaders/PostDBModLoader.d.ts @@ -1,17 +1,21 @@ import { DependencyContainer } from "tsyringe"; -import { OnLoad } from "@spt-aki/di/OnLoad"; -import { ModTypeCheck } from "@spt-aki/loaders/ModTypeCheck"; -import { PreAkiModLoader } from "@spt-aki/loaders/PreAkiModLoader"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; +import { OnLoad } from "@spt/di/OnLoad"; +import { BundleLoader } from "@spt/loaders/BundleLoader"; +import { ModTypeCheck } from "@spt/loaders/ModTypeCheck"; +import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { LocalisationService } from "@spt/services/LocalisationService"; export declare class PostDBModLoader implements OnLoad { protected logger: ILogger; - protected preAkiModLoader: PreAkiModLoader; + protected bundleLoader: BundleLoader; + protected preSptModLoader: PreSptModLoader; protected localisationService: LocalisationService; protected modTypeCheck: ModTypeCheck; - constructor(logger: ILogger, preAkiModLoader: PreAkiModLoader, localisationService: LocalisationService, modTypeCheck: ModTypeCheck); + protected container: DependencyContainer; + constructor(logger: ILogger, bundleLoader: BundleLoader, preSptModLoader: PreSptModLoader, localisationService: LocalisationService, modTypeCheck: ModTypeCheck); onLoad(): Promise; getRoute(): string; getModPath(mod: string): string; - protected executeMods(container: DependencyContainer): Promise; + protected executeModsAsync(): Promise; + protected addBundles(): void; } diff --git a/TypeScript/23CustomAbstractChatBot/types/loaders/PostSptModLoader.d.ts b/TypeScript/23CustomAbstractChatBot/types/loaders/PostSptModLoader.d.ts new file mode 100644 index 0000000..fb54579 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/loaders/PostSptModLoader.d.ts @@ -0,0 +1,17 @@ +import { DependencyContainer } from "tsyringe"; +import { ModTypeCheck } from "@spt/loaders/ModTypeCheck"; +import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; +import { IModLoader } from "@spt/models/spt/mod/IModLoader"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { LocalisationService } from "@spt/services/LocalisationService"; +export declare class PostSptModLoader implements IModLoader { + protected logger: ILogger; + protected preSptModLoader: PreSptModLoader; + protected localisationService: LocalisationService; + protected modTypeCheck: ModTypeCheck; + protected container: DependencyContainer; + constructor(logger: ILogger, preSptModLoader: PreSptModLoader, localisationService: LocalisationService, modTypeCheck: ModTypeCheck); + getModPath(mod: string): string; + load(): Promise; + protected executeModsAsync(): Promise; +} diff --git a/TypeScript/24WebSocket/types/loaders/PreAkiModLoader.d.ts b/TypeScript/23CustomAbstractChatBot/types/loaders/PreSptModLoader.d.ts similarity index 78% rename from TypeScript/24WebSocket/types/loaders/PreAkiModLoader.d.ts rename to TypeScript/23CustomAbstractChatBot/types/loaders/PreSptModLoader.d.ts index 0d297d9..bc846c8 100644 --- a/TypeScript/24WebSocket/types/loaders/PreAkiModLoader.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/loaders/PreSptModLoader.d.ts @@ -1,17 +1,17 @@ import { DependencyContainer } from "tsyringe"; -import { ModLoadOrder } from "@spt-aki/loaders/ModLoadOrder"; -import { ModTypeCheck } from "@spt-aki/loaders/ModTypeCheck"; -import { ModDetails } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { ICoreConfig } from "@spt-aki/models/spt/config/ICoreConfig"; -import { IModLoader } from "@spt-aki/models/spt/mod/IModLoader"; -import { IPackageJsonData } from "@spt-aki/models/spt/mod/IPackageJsonData"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { ModCompilerService } from "@spt-aki/services/ModCompilerService"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { VFS } from "@spt-aki/utils/VFS"; -export declare class PreAkiModLoader implements IModLoader { +import { ModLoadOrder } from "@spt/loaders/ModLoadOrder"; +import { ModTypeCheck } from "@spt/loaders/ModTypeCheck"; +import { ModDetails } from "@spt/models/eft/profile/ISptProfile"; +import { ICoreConfig } from "@spt/models/spt/config/ICoreConfig"; +import { IModLoader } from "@spt/models/spt/mod/IModLoader"; +import { IPackageJsonData } from "@spt/models/spt/mod/IPackageJsonData"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { ModCompilerService } from "@spt/services/ModCompilerService"; +import { JsonUtil } from "@spt/utils/JsonUtil"; +import { VFS } from "@spt/utils/VFS"; +export declare class PreSptModLoader implements IModLoader { protected logger: ILogger; protected vfs: VFS; protected jsonUtil: JsonUtil; @@ -25,7 +25,7 @@ export declare class PreAkiModLoader implements IModLoader { protected readonly modOrderPath = "user/mods/order.json"; protected order: Record; protected imported: Record; - protected akiConfig: ICoreConfig; + protected sptConfig: ICoreConfig; protected serverDependencies: Record; protected skippedMods: Set; constructor(logger: ILogger, vfs: VFS, jsonUtil: JsonUtil, modCompilerService: ModCompilerService, localisationService: LocalisationService, configServer: ConfigServer, modLoadOrder: ModLoadOrder, modTypeCheck: ModTypeCheck); @@ -60,10 +60,10 @@ export declare class PreAkiModLoader implements IModLoader { protected getModsPackageData(mods: string[]): Map; /** * Is the passed in mod compatible with the running server version - * @param mod Mod to check compatibiltiy with AKI + * @param mod Mod to check compatibiltiy with SPT * @returns True if compatible */ - protected isModCombatibleWithAki(mod: IPackageJsonData): boolean; + protected isModCombatibleWithSpt(mod: IPackageJsonData): boolean; /** * Execute each mod found in this.imported * @returns void promise diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/builds/ISetMagazineRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/builds/ISetMagazineRequest.d.ts new file mode 100644 index 0000000..d3d1479 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/builds/ISetMagazineRequest.d.ts @@ -0,0 +1,9 @@ +import { IMagazineTemplateAmmoItem } from "@spt/models/eft/profile/ISptProfile"; +export interface ISetMagazineRequest { + Id: string; + Name: string; + Caliber: string; + Items: IMagazineTemplateAmmoItem[]; + TopCount: number; + BottomCount: number; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/IGlobals.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/IGlobals.d.ts index 276514e..bfcb920 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/IGlobals.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/IGlobals.d.ts @@ -1,10 +1,11 @@ -import { Ixyz } from "@spt-aki/models/eft/common/Ixyz"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; +import { Ixyz } from "@spt/models/eft/common/Ixyz"; +import { Item } from "@spt/models/eft/common/tables/IItem"; export interface IGlobals { time: number; config: IConfig; bot_presets: IBotPreset[]; AudioSettings: IAudioSettings; + EnvironmentSettings: IEnvironmentSettings; BotWeaponScatterings: IBotWeaponScattering[]; ItemPresets: Record; } @@ -19,6 +20,7 @@ export interface IConfig { armor: IArmor; SessionsToShowHotKeys: number; MaxBotsAliveOnMap: number; + MaxBotsAliveOnMapPvE: number; SavagePlayCooldown: number; SavagePlayCooldownNdaFree: number; MarksmanAccuracy: number; @@ -39,17 +41,21 @@ export interface IConfig { BaseLoadTime: number; BaseUnloadTime: number; BaseCheckTime: number; + BluntDamageReduceFromSoftArmorMod: number; + BodyPartColliderSettings: IBodyPartColliderSettings; Customization: ICustomization; UncheckOnShot: boolean; BotsEnabled: boolean; BufferZone: IBufferZone; ArmorMaterials: IArmorMaterials; + ArenaEftTransferSettings: IArenaEftTransferSettings; LegsOverdamage: number; HandsOverdamage: number; StomachOverdamage: number; Health: IHealth; rating: IRating; tournament: ITournament; + QuestSettings: IQuestSettings; RagFair: IRagFair; handbook: IHandbook; FractureCausedByFalling: IProbability; @@ -70,6 +76,11 @@ export interface IConfig { SkillPointsBeforeFatigue: number; SkillFatigueReset: number; DiscardLimitsEnabled: boolean; + EnvironmentSettings: IEnvironmentSetting2; + EventSettings: IEventSettings; + FavoriteItemsSettings: IFavoriteItemsSettings; + VaultingSettings: IVaultingSettings; + BTRSettings: IBTRSettings; EventType: string[]; WalkSpeed: Ixyz; SprintSpeed: Ixyz; @@ -92,6 +103,45 @@ export interface IConfig { Ballistic: IBallistic; RepairSettings: IRepairSettings; } +export interface IEnvironmentSetting2 { + EnvironmentUIData: IEnvironmentUIData; +} +export interface IEnvironmentUIData { + TheUnheardEditionEnvironmentUiType: string[]; +} +export interface IBodyPartColliderSettings { + BackHead: IBodyPartColliderPart; + Ears: IBodyPartColliderPart; + Eyes: IBodyPartColliderPart; + HeadCommon: IBodyPartColliderPart; + Jaw: IBodyPartColliderPart; + LeftCalf: IBodyPartColliderPart; + LeftForearm: IBodyPartColliderPart; + LeftSideChestDown: IBodyPartColliderPart; + LeftSideChestUp: IBodyPartColliderPart; + LeftThigh: IBodyPartColliderPart; + LeftUpperArm: IBodyPartColliderPart; + NeckBack: IBodyPartColliderPart; + NeckFront: IBodyPartColliderPart; + ParietalHead: IBodyPartColliderPart; + Pelvis: IBodyPartColliderPart; + PelvisBack: IBodyPartColliderPart; + RibcageLow: IBodyPartColliderPart; + RibcageUp: IBodyPartColliderPart; + RightCalf: IBodyPartColliderPart; + RightForearm: IBodyPartColliderPart; + RightSideChestDown: IBodyPartColliderPart; + RightSideChestUp: IBodyPartColliderPart; + RightThigh: IBodyPartColliderPart; + RightUpperArm: IBodyPartColliderPart; + SpineDown: IBodyPartColliderPart; + SpineTop: IBodyPartColliderPart; +} +export interface IBodyPartColliderPart { + PenetrationChance: number; + PenetrationDamageMod: number; + PenetrationLevel: number; +} export interface IWeaponFastDrawSettings { HandShakeCurveFrequency: number; HandShakeCurveIntensity: number; @@ -102,6 +152,27 @@ export interface IWeaponFastDrawSettings { WeaponPistolFastSwitchMaxSpeedMult: number; WeaponPistolFastSwitchMinSpeedMult: number; } +export interface IEventSettings { + EventActive: boolean; + EventTime: number; + EventWeather: IEventWeather; + ExitTimeMultiplier: number; + StaminaMultiplier: number; + SummonFailedWeather: IEventWeather; + SummonSuccessWeather: IEventWeather; + WeatherChangeTime: number; +} +export interface IEventWeather { + Cloudness: number; + Hour: number; + Minute: number; + Rain: number; + RainRandomness: number; + ScaterringFogDensity: number; + TopWindDirection: Ixyz; + Wind: number; + WindDirection: number; +} export interface IGraphicSettings { ExperimentalFogInCity: boolean; } @@ -114,8 +185,12 @@ export interface IItemsCommonSettings { ItemRemoveAfterInterruptionTime: number; } export interface ITradingSettings { + BuyRestrictionMaxBonus: Record; BuyoutRestrictions: IBuyoutRestrictions; } +export interface IBuyRestrictionMaxBonus { + multiplier: number; +} export interface IBuyoutRestrictions { MinDurability: number; MinFoodDrinkResource: number; @@ -132,6 +207,7 @@ export interface IExp { kill: IKill; level: ILevel; loot_attempts: ILootAttempt[]; + expForLevelOneDogtag: number; expForLockedDoorOpen: number; expForLockedDoorBreach: number; triggerMult: number; @@ -316,6 +392,17 @@ export interface IBodyParts { Feet: string; Hands: string; } +export interface IArenaEftTransferSettings { + ArenaEftTransferSettings: ArenaEftTransferSettings; +} +export interface ArenaEftTransferSettings { + ArenaManagerReputationTaxMultiplier: number; + CharismaTaxMultiplier: number; + CreditPriceTaxMultiplier: number; + RubTaxMultiplier: number; + TransferLimitsByGameEdition: Record; + TransferLimitsSettings: Record; +} export interface IArmorMaterials { UHMWPE: IArmorType; Aramid: IArmorType; @@ -553,6 +640,7 @@ export interface IBuffs { Buffs_food_alyonka: IBuff[]; Buffs_food_slippers: IBuff[]; Buffs_knife: IBuff[]; + Buffs_EndOfWinterBonfire: IBuff[]; } export interface IBuff { BuffType: string; @@ -656,6 +744,7 @@ export interface IBodyPartsSetting { Minimum: number; Maximum: number; Default: number; + EnvironmentDamageMultiplier: number; OverDamageReceivedMultiplier: number; } export interface IHealthFactorsSettings { @@ -735,6 +824,7 @@ export interface IMaxActiveOfferCount { from: number; to: number; count: number; + countForSpecialEditions: number; } export interface IMaxSumForRarity { Common: IRarityMaxSum; @@ -826,6 +916,97 @@ export interface IRestrictionsInRaid { TemplateId: string; Value: number; } +export interface IFavoriteItemsSettings { + WeaponStandMaxItemsCount: number; + PlaceOfFameMaxItemsCount: number; +} +export interface IVaultingSettings { + IsActive: boolean; + VaultingInputTime: number; + GridSettings: IVaultingGridSettings; + MovesSettings: IVaultingMovesSettings; +} +export interface IVaultingGridSettings { + GridSizeX: number; + GridSizeY: number; + GridSizeZ: number; + SteppingLengthX: number; + SteppingLengthY: number; + SteppingLengthZ: number; + GridOffsetX: number; + GridOffsetY: number; + GridOffsetZ: number; + OffsetFactor: number; +} +export interface IVaultingMovesSettings { + VaultSettings: IVaultingSubMoveSettings; + ClimbSettings: IVaultingSubMoveSettings; +} +export interface IVaultingSubMoveSettings { + IsActive: boolean; + MaxWithoutHandHeight: number; + SpeedRange: Ixyz; + MoveRestrictions: IMoveRestrictions; + AutoMoveRestrictions: IMoveRestrictions; +} +export interface IMoveRestrictions { + IsActive: boolean; + MinDistantToInteract: number; + MinHeight: number; + MaxHeight: number; + MinLength: number; + MaxLength: number; +} +export interface IBTRSettings { + LocationsWithBTR: string[]; + BasePriceTaxi: number; + AddPriceTaxi: number; + CleanUpPrice: number; + DeliveryPrice: number; + ModDeliveryCost: number; + BearPriceMod: number; + UsecPriceMod: number; + ScavPriceMod: number; + CoefficientDiscountCharisma: number; + DeliveryMinPrice: number; + TaxiMinPrice: number; + BotCoverMinPrice: number; + MapsConfigs: Record; + DiameterWheel: number; + HeightWheel: number; + HeightWheelMaxPosLimit: number; + HeightWheelMinPosLimit: number; + SnapToSurfaceWheelsSpeed: number; + CheckSurfaceForWheelsTimer: number; + HeightWheelOffset: number; +} +export interface IBtrMapConfig { + BtrSkin: string; + CheckSurfaceForWheelsTimer: number; + DiameterWheel: number; + HeightWheel: number; + HeightWheelMaxPosLimit: number; + HeightWheelMinPosLimit: number; + HeightWheelOffset: number; + SnapToSurfaceWheelsSpeed: number; + SuspensionDamperStiffness: number; + SuspensionRestLength: number; + SuspensionSpringStiffness: number; + SuspensionTravel: number; + SuspensionWheelRadius: number; + mapID: string; + pathsConfigurations: IPathConfig[]; +} +export interface IPathConfig { + active: boolean; + id: string; + enterPoint: string; + exitPoint: string; + pathPoints: string[]; + once: boolean; + circle: boolean; + circleCount: number; +} export interface ISquadSettings { CountOfRequestsToOnePlayer: number; SecondsForExpiredRequest: number; @@ -833,6 +1014,12 @@ export interface ISquadSettings { } export interface IInsurance { MaxStorageTimeInHour: number; + CoefOfSendingMessageTime: number; + CoefOfHavingMarkOfUnknown: number; + EditionSendingMessageTime: Record; +} +export interface IMessageSendTImeMultipler { + multiplier: number; } export interface ISkillsSettings { SkillProgressRate: number; @@ -1224,6 +1411,7 @@ export interface IFenceSettings { paidExitStandingNumerator: number; } export interface IFenceLevel { + ReachOnMarkOnUnknowns: boolean; SavageCooldownModifier: number; ScavCaseTimeModifier: number; PaidExitCostModifier: number; @@ -1240,6 +1428,13 @@ export interface IFenceLevel { BotHelpChance: number; BotSpreadoutChance: number; BotStopChance: number; + PriceModTaxi: number; + PriceModDelivery: number; + PriceModCleanUp: number; + ReactOnMarkOnUnknowns: boolean; + ReactOnMarkOnUnknownsPVE: boolean; + DeliveryGridSize: Ixyz; + CanInteractWithBtr: boolean; } export interface IInertia { InertiaLimits: Ixyz; @@ -1335,6 +1530,14 @@ export interface IAudioGroupPreset { OcclusionIntensity: number; OverallVolume: number; } +export interface IEnvironmentSettings { + SnowStepsVolumeMultiplier: number; + SurfaceMultipliers: ISurfaceMultiplier[]; +} +export interface ISurfaceMultiplier { + SurfaceType: string; + VolumeMult: number; +} export interface IBotWeaponScattering { Name: string; PriorityScatter1meter: number; @@ -1351,3 +1554,7 @@ export interface IPreset { /** Default presets have this property */ _encyclopedia?: string; } +export interface IQuestSettings { + GlobalRewardRepModifierDailyQuestPvE: number; + GlobalRewardRepModifierQuestPvE: number; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/ILocation.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/ILocation.d.ts index bba2db0..b8589c9 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/ILocation.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/ILocation.d.ts @@ -1,9 +1,21 @@ -import { ILocationBase } from "@spt-aki/models/eft/common/ILocationBase"; -import { ILooseLoot } from "@spt-aki/models/eft/common/ILooseLoot"; +import { Exit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; +import { Ixyz } from "@spt/models/eft/common/Ixyz"; +import { Item } from "@spt/models/eft/common/tables/IItem"; export interface ILocation { + /** Map meta-data */ base: ILocationBase; + /** Loose loot postions and item weights */ looseLoot: ILooseLoot; + /** Static loot item weights */ + staticLoot: Record; + /** Static container postions and item weights */ + staticContainers: IStaticContainerDetails; + staticAmmo: Record; + /** All possible static containers on map + their assign groupings */ statics: IStaticContainer; + /** All possible map extracts */ + allExtracts: Exit[]; } export interface IStaticContainer { containersGroups: Record; @@ -18,3 +30,55 @@ export interface IContainerMinMax { export interface IContainerData { groupId: string; } +export interface IStaticLootDetails { + itemcountDistribution: ItemCountDistribution[]; + itemDistribution: ItemDistribution[]; +} +export interface ItemCountDistribution { + count: number; + relativeProbability: number; +} +export interface ItemDistribution { + tpl: string; + relativeProbability: number; +} +export interface IStaticPropsBase { + Id: string; + IsContainer: boolean; + useGravity: boolean; + randomRotation: boolean; + Position: Ixyz; + Rotation: Ixyz; + IsGroupPosition: boolean; + IsAlwaysSpawn: boolean; + GroupPositions: any[]; + Root: string; + Items: any[]; +} +export interface IStaticWeaponProps extends IStaticPropsBase { + Items: Item[]; +} +export interface IStaticContainerDetails { + staticWeapons: IStaticWeaponProps[]; + staticContainers: IStaticContainerData[]; + staticForced: IStaticForcedProps[]; +} +export interface IStaticContainerData { + probability: number; + template: IStaticContainerProps; +} +export interface IStaticAmmoDetails { + tpl: string; + relativeProbability: number; +} +export interface IStaticForcedProps { + containerId: string; + itemTpl: string; +} +export interface IStaticContainerProps extends IStaticPropsBase { + Items: StaticItem[]; +} +export interface StaticItem { + _id: string; + _tpl: string; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/ILocationBase.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/ILocationBase.d.ts index 1121e9f..10f1a57 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/ILocationBase.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/ILocationBase.d.ts @@ -1,5 +1,5 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; -import { Ixyz } from "@spt-aki/models/eft/common/Ixyz"; +import { MinMax } from "@spt/models/common/MinMax"; +import { Ixyz } from "@spt/models/eft/common/Ixyz"; export interface ILocationBase { AccessKeys: string[]; AirdropParameters: AirdropParameter[]; @@ -17,6 +17,7 @@ export interface ILocationBase { BotMax: number; BotMaxPlayer: number; BotMaxTimePlayer: number; + BotMaxPvE: number; BotNormal: number; BotSpawnCountStep: number; BotSpawnPeriodCheck: number; @@ -32,6 +33,7 @@ export interface ILocationBase { Enabled: boolean; EnableCoop: boolean; GlobalLootChanceModifier: number; + GlobalLootChanceModifierPvE: number; GlobalContainerChanceModifier: number; IconX: number; IconY: number; @@ -72,6 +74,7 @@ export interface ILocationBase { doors: any[]; EscapeTimeLimit: number; EscapeTimeLimitCoop: number; + EscapeTimeLimitPVE: number; exit_access_time: number; exit_count: number; exit_time: number; @@ -132,8 +135,11 @@ export interface BossLocationSpawn { TriggerId: string; TriggerName: string; Delay?: number; + ForceSpawn?: boolean; + IgnoreMaxBots?: boolean; Supports?: BossSupport[]; sptId?: string; + spawnMode: string[]; } export interface BossSupport { BossEscortAmount: string; @@ -171,6 +177,7 @@ export interface SpawnPointParam { BotZoneName: string; Categories: string[]; ColliderParams: ColliderParams; + CorePointId: number; DelayToCanSpawnSec: number; Id: string; Infiltration: string; @@ -187,19 +194,28 @@ export interface Props { Radius: number; } export interface Exit { + /** % Chance out of 100 exit will appear in raid */ Chance: number; + ChancePVE: number; Count: number; + CountPVE: number; EntryPoints: string; + EventAvailable: boolean; ExfiltrationTime: number; + ExfiltrationTimePVE: number; ExfiltrationType: string; RequiredSlot?: string; Id: string; MaxTime: number; + MaxTimePVE: number; MinTime: number; + MinTimePVE: number; Name: string; PassageRequirement: string; PlayersCount: number; + PlayersCountPVE: number; RequirementTip: string; + Side?: string; } export interface MaxItemCountInLocation { TemplateId: string; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/ILocationsSourceDestinationBase.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/ILocationsSourceDestinationBase.d.ts index 1e8d80c..e6bc8ee 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/ILocationsSourceDestinationBase.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/ILocationsSourceDestinationBase.d.ts @@ -1,4 +1,4 @@ -import { ILocations } from "@spt-aki/models/spt/server/ILocations"; +import { ILocations } from "@spt/models/spt/server/ILocations"; export interface ILocationsGenerateAllResponse { locations: ILocations; paths: Path[]; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/ILooseLoot.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/ILooseLoot.d.ts index 0dce230..b5b538c 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/ILooseLoot.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/ILooseLoot.d.ts @@ -1,5 +1,5 @@ -import { Ixyz } from "@spt-aki/models/eft/common/Ixyz"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; +import { Ixyz } from "@spt/models/eft/common/Ixyz"; +import { Item } from "@spt/models/eft/common/tables/IItem"; export interface ILooseLoot { spawnpointCount: SpawnpointCount; spawnpointsForced: SpawnpointsForced[]; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/IPmcData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/IPmcData.d.ts index f834822..313a92c 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/IPmcData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/IPmcData.d.ts @@ -1,7 +1,11 @@ -import { IBotBase, IEftStats } from "@spt-aki/models/eft/common/tables/IBotBase"; +import { IBotBase, IEftStats } from "@spt/models/eft/common/tables/IBotBase"; export interface IPmcData extends IBotBase { } export interface IPostRaidPmcData extends IBotBase { - /** Only found in profile we get from client post raid */ - EftStats: IEftStats; + Stats: IPostRaidStats; +} +export interface IPostRaidStats { + Eft: IEftStats; + /** Only found in profile we get from client post raid */ + Arena: IEftStats; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/request/IUIDRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/request/IUIDRequestData.d.ts new file mode 100644 index 0000000..d905ad7 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/request/IUIDRequestData.d.ts @@ -0,0 +1,3 @@ +export interface IUIDRequestData { + uid: string; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IAchievement.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IAchievement.d.ts new file mode 100644 index 0000000..7669e00 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IAchievement.d.ts @@ -0,0 +1,18 @@ +import { IQuestConditionTypes, IQuestRewards } from "@spt/models/eft/common/tables/IQuest"; +export interface IAchievement { + id: string; + imageUrl: string; + assetPath: string; + rewards: IQuestRewards; + conditions: IQuestConditionTypes; + instantComplete: boolean; + showNotificationsInGame: boolean; + showProgress: boolean; + prefab: string; + rarity: string; + hidden: boolean; + showConditions: boolean; + progressBarEnabled: boolean; + side: string; + index: number; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IBotBase.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IBotBase.d.ts index 8ff3ba9..a7fe1ca 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IBotBase.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IBotBase.d.ts @@ -1,9 +1,11 @@ -import { Item, Upd } from "@spt-aki/models/eft/common/tables/IItem"; -import { IPmcDataRepeatableQuest } from "@spt-aki/models/eft/common/tables/IRepeatableQuests"; -import { IRagfairOffer } from "@spt-aki/models/eft/ragfair/IRagfairOffer"; -import { HideoutAreas } from "@spt-aki/models/enums/HideoutAreas"; -import { MemberCategory } from "@spt-aki/models/enums/MemberCategory"; -import { QuestStatus } from "@spt-aki/models/enums/QuestStatus"; +import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IPmcDataRepeatableQuest } from "@spt/models/eft/common/tables/IRepeatableQuests"; +import { IRagfairOffer } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { BonusSkillType } from "@spt/models/enums/BonusSkillType"; +import { BonusType } from "@spt/models/enums/BonusType"; +import { HideoutAreas } from "@spt/models/enums/HideoutAreas"; +import { MemberCategory } from "@spt/models/enums/MemberCategory"; +import { QuestStatus } from "@spt/models/enums/QuestStatus"; export interface IBotBase { _id: string; aid: number; @@ -17,14 +19,15 @@ export interface IBotBase { Skills: Skills; Stats: Stats; Encyclopedia: Record; - ConditionCounters: ConditionCounters; - BackendCounters: Record; + TaskConditionCounters: Record; InsuredItems: InsuredItem[]; Hideout: Hideout; Quests: IQuestStatus[]; TradersInfo: Record; UnlockedInfo: IUnlockedInfo; RagfairInfo: RagfairInfo; + /** Achievement id and timestamp */ + Achievements: Record; RepeatableQuests: IPmcDataRepeatableQuest[]; Bonuses: Bonus[]; Notes: Notes; @@ -32,9 +35,24 @@ export interface IBotBase { CoopExtractCounts: Record; SurvivorClass: SurvivorClass; WishList: string[]; + moneyTransferLimitData: IMoneyTransferLimits; /** SPT specific property used during bot generation in raid */ sptIsPmc?: boolean; } +export interface IMoneyTransferLimits { + /** TODO: Implement */ + nextResetTime: number; + remainingLimit: number; + totalLimit: number; + resetInterval: number; +} +export interface ITaskConditionCounter { + id: string; + type: string; + value: number; + /** Quest id */ + sourceId: string; +} export interface IUnlockedInfo { unlockedProductionRecipe: string[]; } @@ -44,6 +62,7 @@ export interface Info { LowerNickname: string; Side: string; SquadInviteRestriction: boolean; + HasCoopExtension: boolean; Voice: string; Level: number; Experience: number; @@ -63,6 +82,8 @@ export interface Info { BannedUntil: number; IsStreamerModeAvailable: boolean; lastCompletedEvent?: LastCompleted; + SelectedMemberCategory: number; + isMigratedSkills: boolean; } export interface Settings { Role: string; @@ -72,7 +93,7 @@ export interface Settings { AggressorBonus: number; } export interface IBan { - type: BanType; + banType: BanType; dateTime: number; } export declare enum BanType { @@ -96,6 +117,7 @@ export interface Health { Temperature: CurrentMax; BodyParts: BodyPartsHealth; UpdateTime: number; + Immortal?: boolean; } export interface BodyPartsHealth { Head: BodyPartHealth; @@ -127,6 +149,7 @@ export interface Inventory { /** Key is hideout area enum numeric as string e.g. "24", value is area _id */ hideoutAreaStashes: Record; fastPanel: Record; + favoriteItems: string[]; } export interface IBaseJsonSkills { Common: Record; @@ -151,7 +174,7 @@ export interface Common extends IBaseSkill { export interface Mastering extends IBaseSkill { } export interface Stats { - Eft: IEftStats; + Eft?: IEftStats; } export interface IEftStats { CarriedQuestItems: string[]; @@ -170,6 +193,7 @@ export interface IEftStats { LastPlayerState?: LastPlayerState; TotalInGameTime: number; SurvivorClass?: string; + sptLastRaidFenceRepChange?: number; } export interface IDroppedItem { QuestId: string; @@ -202,14 +226,6 @@ export interface CounterKeyValue { Key: string[]; Value: number; } -export interface ConditionCounters { - Counters: Counter[]; -} -export interface Counter { - id: string; - value: number; - qid: string; -} export interface Aggressor { AccountId: string; ProfileId: string; @@ -302,6 +318,9 @@ export interface Productive { ProductionTime?: number; GivenItemsInStart?: string[]; Interrupted?: boolean; + Code?: string; + Decoded?: boolean; + AvailableForFinish?: boolean; /** Used in hideout production.json */ needFuelForAllProductionTime?: boolean; /** Used when sending data to client */ @@ -311,6 +330,8 @@ export interface Productive { sptIsComplete?: boolean; /** Is the craft a Continuous, e.g bitcoins/water collector */ sptIsContinuous?: boolean; + /** Stores a list of tools used in this craft and whether they're FiR, to give back once the craft is done */ + sptRequiredTools?: Item[]; } export interface Production extends Productive { RecipeId: string; @@ -330,6 +351,7 @@ export interface HideoutArea { level: number; active: boolean; passiveBonusesEnabled: boolean; + /** Must be integer */ completeTime: number; constructing: boolean; slots: HideoutSlot[]; @@ -351,6 +373,8 @@ export interface LastCompleted { export interface Notes { Notes: Note[]; } +export interface CarExtractCounts { +} export declare enum SurvivorClass { UNKNOWN = 0, NEUTRALIZER = 1, @@ -363,7 +387,7 @@ export interface IQuestStatus { startTime: number; status: QuestStatus; statusTimers?: Record; - /** Property does not exist in live profile data, but is used by ProfileChanges.questsStatus when sent to client*/ + /** Property does not exist in live profile data, but is used by ProfileChanges.questsStatus when sent to client */ completedConditions?: string[]; availableAfter?: number; } @@ -382,7 +406,7 @@ export interface RagfairInfo { } export interface Bonus { id?: string; - type: string; + type: BonusType; templateId?: string; passive?: boolean; production?: boolean; @@ -390,7 +414,7 @@ export interface Bonus { value?: number; icon?: string; filter?: string[]; - skillType?: string; + skillType?: BonusSkillType; } export interface Note { Time: number; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IBotType.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IBotType.d.ts index 53a8021..074a7d6 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IBotType.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IBotType.d.ts @@ -1,5 +1,5 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; -import { Skills } from "@spt-aki/models/eft/common/tables/IBotBase"; +import { MinMax } from "@spt/models/common/MinMax"; +import { Skills } from "@spt/models/eft/common/tables/IBotBase"; export interface IBotType { appearance: Appearance; chances: Chances; @@ -15,13 +15,14 @@ export interface IBotType { export interface Appearance { body: Record; feet: Record; - hands: string[]; - head: string[]; - voice: string[]; + hands: Record; + head: Record; + voice: Record; } export interface Chances { equipment: EquipmentChances; - mods: ModsChances; + weaponMods: ModsChances; + equipmentMods: ModsChances; } export interface EquipmentChances { ArmBand: number; @@ -108,6 +109,9 @@ export interface GenerationWeightingItems { grenades: GenerationData; healing: GenerationData; drugs: GenerationData; + food: GenerationData; + drink: GenerationData; + currency: GenerationData; stims: GenerationData; backpackLoot: GenerationData; pocketLoot: GenerationData; @@ -119,7 +123,7 @@ export interface GenerationData { /** key: number of items, value: weighting */ weights: Record; /** Array of item tpls */ - whitelist: string[]; + whitelist: Record; } export interface Health { BodyParts: BodyPart[]; @@ -159,10 +163,10 @@ export interface Equipment { TacticalVest: Record; } export interface Items { - Backpack: string[]; - Pockets: string[]; - SecuredContainer: string[]; - SpecialLoot: string[]; - TacticalVest: string[]; + Backpack: Record; + Pockets: Record; + SecuredContainer: Record; + SpecialLoot: Record; + TacticalVest: Record; } export type Mods = Record>; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/ICustomizationItem.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/ICustomizationItem.d.ts index 2bab177..3883765 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/ICustomizationItem.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/ICustomizationItem.d.ts @@ -1,4 +1,4 @@ -import { Ixyz } from "@spt-aki/models/eft/common/Ixyz"; +import { Ixyz } from "@spt/models/eft/common/Ixyz"; export interface ICustomizationItem { _id: string; _name: string; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IItem.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IItem.d.ts index 09a239c..8f60c4f 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IItem.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IItem.d.ts @@ -33,6 +33,7 @@ export interface Upd { Foldable?: Foldable; SideEffect?: SideEffect; RepairKit?: RepairKit; + CultistAmulet?: ICultistAmulet; } export interface Buff { rarity: string; @@ -119,3 +120,6 @@ export interface SideEffect { export interface RepairKit { Resource: number; } +export interface ICultistAmulet { + NumberOfUsages: number; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/ILootBase.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/ILootBase.d.ts deleted file mode 100644 index 0bbb91d..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/ILootBase.d.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { Ixyz } from "@spt-aki/models/eft/common/Ixyz"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -export interface ILootBase { - staticAmmo: Record; - staticContainers: Record; - staticLoot: Record; -} -export interface IStaticAmmoDetails { - tpl: string; - relativeProbability: number; -} -export interface IStaticContainerDetails { - staticWeapons: IStaticWeaponProps[]; - staticContainers: IStaticContainerData[]; - staticForced: IStaticForcedProps[]; -} -export interface IStaticContainerData { - probability: number; - template: IStaticContainerProps; -} -export interface IStaticPropsBase { - Id: string; - IsContainer: boolean; - useGravity: boolean; - randomRotation: boolean; - Position: Ixyz; - Rotation: Ixyz; - IsGroupPosition: boolean; - IsAlwaysSpawn: boolean; - GroupPositions: any[]; - Root: string; - Items: any[]; -} -export interface IStaticWeaponProps extends IStaticPropsBase { - Items: Item[]; -} -export interface IStaticContainerProps extends IStaticPropsBase { - Items: StaticItem[]; -} -export interface StaticItem { - _id: string; - _tpl: string; -} -export interface IStaticForcedProps { - containerId: string; - itemTpl: string; -} -export interface IStaticLootDetails { - itemcountDistribution: ItemCountDistribution[]; - itemDistribution: ItemDistribution[]; -} -export interface ItemCountDistribution { - count: number; - relativeProbability: number; -} -export interface ItemDistribution { - tpl: string; - relativeProbability: number; -} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IProfileTemplate.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IProfileTemplate.d.ts index 35db121..20923bc 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IProfileTemplate.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IProfileTemplate.d.ts @@ -1,20 +1,22 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Dialogue, IUserBuilds } from "@spt-aki/models/eft/profile/IAkiProfile"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Dialogue, IUserBuilds } from "@spt/models/eft/profile/ISptProfile"; export interface IProfileTemplates { - Standard: IProfileSides; + "Standard": IProfileSides; "Left Behind": IProfileSides; "Prepare To Escape": IProfileSides; "Edge Of Darkness": IProfileSides; + "Unheard": IProfileSides; + "Tournament": IProfileSides; "SPT Developer": IProfileSides; "SPT Easy start": IProfileSides; "SPT Zero to hero": IProfileSides; } export interface IProfileSides { descriptionLocaleKey: string; - usec: TemplateSide; - bear: TemplateSide; + usec: ITemplateSide; + bear: ITemplateSide; } -export interface TemplateSide { +export interface ITemplateSide { character: IPmcData; suits: string[]; dialogues: Record; @@ -22,10 +24,16 @@ export interface TemplateSide { trader: ProfileTraderTemplate; } export interface ProfileTraderTemplate { - initialLoyaltyLevel: number; + initialLoyaltyLevel: Record; + initialStanding: Record; setQuestsAvailableForStart?: boolean; setQuestsAvailableForFinish?: boolean; - initialStanding: number; initialSalesSum: number; jaegerUnlocked: boolean; + /** How many days is usage of the flea blocked for upon profile creation */ + fleaBlockedDays?: number; + /** What traders default to being locked on profile creation */ + lockedByDefaultOverride?: string[]; + /** What traders should have their clothing unlocked/purchased on creation */ + purchaseAllClothingByDefaultForTrader?: string[]; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IQuest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IQuest.d.ts index edd9849..54ff191 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IQuest.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IQuest.d.ts @@ -1,13 +1,13 @@ -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { QuestRewardType } from "@spt-aki/models/enums/QuestRewardType"; -import { QuestStatus } from "@spt-aki/models/enums/QuestStatus"; -import { QuestTypeEnum } from "@spt-aki/models/enums/QuestTypeEnum"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { QuestRewardType } from "@spt/models/enums/QuestRewardType"; +import { QuestStatus } from "@spt/models/enums/QuestStatus"; +import { QuestTypeEnum } from "@spt/models/enums/QuestTypeEnum"; export interface IQuest { /** SPT addition - human readable quest name */ QuestName?: string; _id: string; canShowNotificationsInGame: boolean; - conditions: Conditions; + conditions: IQuestConditionTypes; description: string; failMessageText: string; name: string; @@ -24,8 +24,11 @@ export interface IQuest { secretQuest: boolean; startedMessageText: string; successMessageText: string; + acceptPlayerMessage: string; + declinePlayerMessage: string; + completePlayerMessage: string; templateId: string; - rewards: Rewards; + rewards: IQuestRewards; /** Becomes 'AppearStatus' inside client */ status: string | number; KeyQuest: boolean; @@ -35,28 +38,24 @@ export interface IQuest { /** Status of quest to player */ sptStatus?: QuestStatus; } -export interface Conditions { - Started: AvailableForConditions[]; - AvailableForFinish: AvailableForConditions[]; - AvailableForStart: AvailableForConditions[]; - Success: AvailableForConditions[]; - Fail: AvailableForConditions[]; +export interface IQuestConditionTypes { + Started: IQuestCondition[]; + AvailableForFinish: IQuestCondition[]; + AvailableForStart: IQuestCondition[]; + Success: IQuestCondition[]; + Fail: IQuestCondition[]; } -export interface AvailableForConditions { - _parent: string; - _props: AvailableForProps; - dynamicLocale?: boolean; -} -export interface AvailableForProps { +export interface IQuestCondition { id: string; - index: number; - parentId: string; - isEncoded: boolean; - dynamicLocale: boolean; - value?: string | number; + index?: number; compareMethod?: string; + dynamicLocale: boolean; visibilityConditions?: VisibilityCondition[]; - target?: string | string[]; + globalQuestCounterId?: string; + parentId?: string; + target: string[] | string; + value?: string | number; + type?: boolean; status?: QuestStatus[]; availableAfter?: number; dispersion?: number; @@ -66,60 +65,87 @@ export interface AvailableForProps { dogtagLevel?: number; maxDurability?: number; minDurability?: number; - counter?: AvailableForCounter; + counter?: IQuestConditionCounter; plantTime?: number; zoneId?: string; - type?: boolean; countInRaid?: boolean; - globalQuestCounterId?: any; + completeInSeconds?: number; + isEncoded?: boolean; + conditionType?: string; } -export interface AvailableForCounter { +export interface IQuestConditionCounter { id: string; - conditions: CounterCondition[]; + conditions: IQuestConditionCounterCondition[]; } -export interface CounterCondition { - _parent: string; - _props: CounterProps; -} -export interface CounterProps { +export interface IQuestConditionCounterCondition { id: string; - target: string[] | string; + dynamicLocale: boolean; + target?: string[] | string; + completeInSeconds?: number; + energy?: IValueCompare; + exitName?: string; + hydration?: IValueCompare; + time?: IValueCompare; compareMethod?: string; - value?: string; + value?: number; weapon?: string[]; + distance?: ICounterConditionDistance; equipmentInclusive?: string[][]; weaponModsInclusive?: string[][]; + weaponModsExclusive?: string[][]; + enemyEquipmentInclusive?: string[][]; + enemyEquipmentExclusive?: string[][]; + weaponCaliber?: string[]; + savageRole?: string[]; status?: string[]; bodyPart?: string[]; - daytime?: DaytimeCounter; + daytime?: IDaytimeCounter; + conditionType?: string; + enemyHealthEffects?: IEnemyHealthEffect[]; + resetOnSessionEnd?: boolean; } -export interface DaytimeCounter { +export interface IEnemyHealthEffect { + bodyParts: string[]; + effects: string[]; +} +export interface IValueCompare { + compareMethod: string; + value: number; +} +export interface ICounterConditionDistance { + value: number; + compareMethod: string; +} +export interface IDaytimeCounter { from: number; to: number; } export interface VisibilityCondition { id: string; - value: number; - dynamicLocale: boolean; + target: string; + value?: number; + dynamicLocale?: boolean; oneSessionOnly: boolean; + conditionType: string; } -export interface Rewards { - AvailableForStart: Reward[]; - AvailableForFinish: Reward[]; - Started: Reward[]; - Success: Reward[]; - Fail: Reward[]; - FailRestartable: Reward[]; - Expired: Reward[]; +export interface IQuestRewards { + AvailableForStart?: IQuestReward[]; + AvailableForFinish?: IQuestReward[]; + Started?: IQuestReward[]; + Success?: IQuestReward[]; + Fail?: IQuestReward[]; + FailRestartable?: IQuestReward[]; + Expired?: IQuestReward[]; } -export interface Reward extends Item { +export interface IQuestReward { value?: string | number; - id: string; + id?: string; type: QuestRewardType; index: number; target?: string; items?: Item[]; loyaltyLevel?: number; + /** Hideout area id */ traderId?: string; unknown?: boolean; findInRaid?: boolean; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IRepeatableQuests.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IRepeatableQuests.d.ts index 8101c51..0753cff 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IRepeatableQuests.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IRepeatableQuests.d.ts @@ -1,31 +1,31 @@ -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -export interface IReward { - index: number; - type: string; - value: number; - target?: string; - items?: Item[]; +import { IQuest, IQuestConditionTypes, IQuestRewards } from "@spt/models/eft/common/tables/IQuest"; +export interface IRepeatableQuest extends IQuest { + changeCost: IChangeCost[]; + changeStandingCost: number; + sptRepatableGroupName: string; } export interface IRepeatableQuestDatabase { - templates: ITemplates; + templates: IRepeatableTemplates; rewards: IRewardOptions; data: IOptions; samples: ISampleQuests[]; } -export interface ITemplates { - Elimination: IRepeatableQuest; - Completion: IRepeatableQuest; - Exploration: IRepeatableQuest; +export interface IRepeatableTemplates { + Elimination: IQuest; + Completion: IQuest; + Exploration: IQuest; } export interface IPmcDataRepeatableQuest { id?: string; name: string; + unavailableTime?: string; activeQuests: IRepeatableQuest[]; inactiveQuests: IRepeatableQuest[]; endTime: number; - changeRequirement: TChangeRequirementRecord; + changeRequirement: Record; + freeChanges: number; + freeChangesAvailable: number; } -export type TChangeRequirementRecord = Record; export interface IChangeRequirement { changeCost: IChangeCost[]; changeStandingCost: number; @@ -34,183 +34,6 @@ export interface IChangeCost { templateId: string; count: number; } -export interface IRepeatableQuest { - _id: string; - traderId: string; - location: string; - image: string; - type: string; - isKey: boolean; - restartable: boolean; - instantComplete: boolean; - secretQuest: boolean; - canShowNotificationsInGame: boolean; - rewards: IRewards; - conditions: IConditions; - side: string; - questStatus: any; - name: string; - note: string; - description: string; - successMessageText: string; - failMessageText: string; - startedMessageText: string; - changeQuestMessageText: string; - acceptPlayerMessage: string; - declinePlayerMessage: string; - completePlayerMessage: string; - templateId: string; - changeCost: IChangeCost[]; - changeStandingCost: number; - sptRepatableGroupName?: string; -} -export interface IRewards { - Started: IReward[]; - Success: IReward[]; - Fail: IReward[]; -} -export interface IConditions { - AvailableForStart: any[]; - AvailableForFinish: IAvailableFor[]; - Fail: any[]; -} -export interface IAvailableFor { - _props: IAvailableForProps; - _parent: string; - dynamicLocale: boolean; -} -export interface IAvailableForProps { - id: string; - parentId: string; - dynamicLocale: boolean; - index: number; - visibilityConditions: IVisibilityCondition[]; - value: number; -} -export interface IVisibilityCondition { - id: string; - oneSessionOnly: boolean; - value: number; - index: number; - dynamicLocale: boolean; -} -export interface IAvailableForPropsCounter extends IAvailableForProps { - type: string; - oneSessionOnly: boolean; - doNotResetIfCounterCompleted: boolean; - counter?: ICounter; -} -export interface ICounter { - id: string; - conditions: ICondition[]; -} -export interface ICondition { - _props: IConditionProps; - _parent: string; -} -export interface IConditionProps { - id: string; - dynamicLocale: boolean; -} -export interface IElimination extends IRepeatableQuest { - conditions: IEliminationConditions; -} -export interface IEliminationConditions extends IConditions { - AvailableForFinish: IEliminationAvailableFor[]; -} -export interface IEliminationAvailableFor extends IAvailableFor { - _props: IEliminationAvailableForProps; -} -export interface IEliminationAvailableForProps extends IAvailableForPropsCounter { - counter: IEliminationCounter; -} -export interface IEliminationCounter extends ICounter { - conditions: IEliminationCondition[]; -} -export interface IEliminationCondition extends ICondition { - _props: ILocationConditionProps | IKillConditionProps; -} -export interface IExploration extends IRepeatableQuest { - conditions: IExplorationConditions; -} -export interface IExplorationConditions extends IConditions { - AvailableForFinish: IExplorationAvailableFor[]; -} -export interface IExplorationAvailableFor extends IAvailableFor { - _props: IExplorationAvailableForProps; -} -export interface IExplorationAvailableForProps extends IAvailableForPropsCounter { - counter: IExplorationCounter; -} -export interface IExplorationCounter extends ICounter { - conditions: IExplorationCondition[]; -} -export interface IExplorationCondition extends ICondition { - _props: ILocationConditionProps | IExitStatusConditionProps | IExitNameConditionProps; -} -export interface IPickup extends IRepeatableQuest { - conditions: IPickupConditions; -} -export interface IPickupConditions extends IConditions { - AvailableForFinish: IPickupAvailableFor[]; -} -export interface IPickupAvailableFor extends IAvailableFor { - _props: IPickupAvailableForProps; -} -export interface IPickupAvailableForProps extends IAvailableForPropsCounter { - target: string[]; - counter?: IPickupCounter; -} -export interface IPickupCounter extends ICounter { - conditions: IPickupCondition[]; -} -export interface IPickupCondition extends ICondition { - _props: IEquipmentConditionProps | ILocationConditionProps | IExitStatusConditionProps; -} -export interface ICompletion extends IRepeatableQuest { - conditions: ICompletionConditions; -} -export interface ICompletionConditions extends IConditions { - AvailableForFinish: ICompletionAvailableFor[]; -} -export interface ICompletionAvailableFor extends IAvailableFor { - _props: ICompletionAvailableForProps; -} -export interface ICompletionAvailableForProps extends IAvailableForProps { - target: string[]; - minDurability: number; - maxDurability: number; - dogtagLevel: number; - onlyFoundInRaid: boolean; -} -export interface ILocationConditionProps extends IConditionProps { - target: string[]; - weapon?: string[]; - weaponCategories?: string[]; -} -export interface IEquipmentConditionProps extends IConditionProps { - equipmentInclusive: [string[]]; - IncludeNotEquippedItems: boolean; -} -export interface IKillConditionProps extends IConditionProps { - target: string; - value: number; - savageRole?: string[]; - bodyPart?: string[]; - distance?: IDistanceCheck; - weapon?: string[]; - weaponCategories?: string[]; -} -export interface IDistanceCheck { - compareMethod: string; - value: number; -} -export interface IExitStatusConditionProps extends IConditionProps { - status: string[]; -} -export interface IExitNameConditionProps extends IConditionProps { - exitName: string; -} export interface IRewardOptions { itemsBlacklist: string[]; } @@ -240,8 +63,8 @@ export interface ISampleQuests { instantComplete: boolean; secretQuest: boolean; canShowNotificationsInGame: boolean; - rewards: IRewards; - conditions: IConditions; + rewards: IQuestRewards; + conditions: IQuestConditionTypes; name: string; note: string; description: string; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/ITemplateItem.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/ITemplateItem.d.ts index c17c7a0..c5b2da3 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/ITemplateItem.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/ITemplateItem.d.ts @@ -1,11 +1,11 @@ -import { Ixyz } from "@spt-aki/models/eft/common/Ixyz"; +import { Ixyz } from "@spt/models/eft/common/Ixyz"; export interface ITemplateItem { _id: string; _name: string; _parent: string; - _type: string; + _type: ItemType; _props: Props; - _proto: string; + _proto?: string; } export interface Props { AllowSpawnOnLocations?: any[]; @@ -37,6 +37,7 @@ export interface Props { IsUngivable?: boolean; IsUnremovable?: boolean; IsLockedafterEquip?: boolean; + IsRagfairCurrency?: boolean; IsSpecialSlotOnly?: boolean; IsStationaryWeapon?: boolean; QuestItem?: boolean; @@ -63,6 +64,7 @@ export interface Props { DiscardingBlock?: boolean; DropSoundType?: string; RagFairCommissionModifier?: number; + RarityPvE?: string; IsAlwaysAvailableForInsurance?: boolean; DiscardLimit?: number; MaxResource?: number; @@ -82,6 +84,7 @@ export interface Props { EffectiveDistance?: number; Ergonomics?: number; Velocity?: number; + WithAnimatorAiming?: boolean; RaidModdable?: boolean; ToolModdable?: boolean; UniqueAnimationModID?: number; @@ -155,6 +158,8 @@ export interface Props { BlocksArmorVest?: boolean; speedPenaltyPercent?: number; GridLayoutName?: string; + ContainerSpawnChanceModifier?: number; + SpawnExcludedFilter?: string[]; SpawnFilter?: any[]; containType?: any[]; sizeWidth?: number; @@ -170,6 +175,9 @@ export interface Props { MaxDurability?: number; armorZone?: string[]; armorClass?: string | number; + armorColliders?: string[]; + armorPlateColliders?: string[]; + bluntDamageReduceFromSoftArmor?: boolean; mousePenalty?: number; weaponErgonomicPenalty?: number; BluntThroughput?: number; @@ -179,14 +187,17 @@ export interface Props { weapUseType?: string; ammoCaliber?: string; OperatingResource?: number; + PostRecoilHorizontalRangeHandRotation?: Ixyz; + PostRecoilVerticalRangeHandRotation?: Ixyz; + ProgressRecoilAngleOnStable?: Ixyz; RepairComplexity?: number; durabSpawnMin?: number; durabSpawnMax?: number; isFastReload?: boolean; RecoilForceUp?: number; RecoilForceBack?: number; - Convergence?: number; RecoilAngle?: number; + RecoilCamera?: number; weapFireType?: string[]; RecolDispersion?: number; SingleFireRate?: number; @@ -194,6 +205,7 @@ export interface Props { bFirerate?: number; bEffDist?: number; bHearDist?: number; + blockLeftStance?: boolean; isChamberLoad?: boolean; chamberAmmoCount?: number; isBoltCatch?: boolean; @@ -202,8 +214,9 @@ export interface Props { AdjustCollimatorsToTrajectory?: boolean; shotgunDispersion?: number; Chambers?: Slot[]; - CameraRecoil?: number; CameraSnap?: number; + CameraToWeaponAngleSpeedRange?: Ixyz; + CameraToWeaponAngleStep?: number; ReloadMode?: string; AimPlane?: number; TacticalReloadStiffnes?: Ixyz; @@ -211,6 +224,7 @@ export interface Props { RecoilCenter?: Ixyz; RotationCenter?: Ixyz; RotationCenterNoStock?: Ixyz; + ShotsGroupSettings?: IShotsGroupSettings[]; FoldedSlot?: string; CompactHandling?: boolean; MinRepairDegradation?: number; @@ -242,6 +256,11 @@ export interface Props { AllowOverheat?: boolean; DoubleActionAccuracyPenalty?: number; RecoilPosZMult?: number; + RecoilReturnPathDampingHandRotation?: number; + RecoilReturnPathOffsetHandRotation?: number; + RecoilReturnSpeedHandRotation?: number; + RecoilStableAngleIncreaseStep?: number; + RecoilStableIndexShot?: number; MinRepairKitDegradation?: number; MaxRepairKitDegradation?: number; BlocksEarpiece?: boolean; @@ -335,7 +354,8 @@ export interface Props { casingMass?: number; casingSounds?: string; ProjectileCount?: number; - PenetrationChance?: number; + PenetrationChanceObstacle?: number; + PenetrationDamageMod?: number; RicochetChance?: number; FragmentationChance?: number; Deterioration?: number; @@ -386,6 +406,21 @@ export interface Props { LinkedWeapon?: string; UseAmmoWithoutShell?: boolean; RandomLootSettings?: IRandomLootSettings; + RecoilCategoryMultiplierHandRotation?: number; + RecoilDampingHandRotation?: number; + LeanWeaponAgainstBody?: boolean; + RemoveShellAfterFire?: boolean; + RepairStrategyTypes?: string[]; + IsEncoded?: boolean; + LayoutName?: string; + Lower75Prefab?: Prefab; + MaxUsages?: number; + ScavKillExpPenalty?: number; + ScavKillExpPenaltyPVE?: number; + ScavKillStandingPenalty?: number; + ScavKillStandingPenaltyPVE?: number; + TradersDiscount?: number; + TradersDiscountPVE?: number; } export interface IHealthEffect { type: string; @@ -427,9 +462,14 @@ export interface Slot { } export interface SlotProps { filters: SlotFilter[]; + MaxStackCount?: number; } export interface SlotFilter { Shift?: number; + locked?: boolean; + Plate?: string; + armorColliders?: string[]; + armorPlateColliders?: string[]; Filter: string[]; AnimationIndex?: number; } @@ -440,7 +480,7 @@ export interface StackSlot { _max_count: number; _props: StackSlotProps; _proto: string; - upd: any; + upd?: any; } export interface StackSlotProps { filters: SlotFilter[]; @@ -490,3 +530,14 @@ export interface IColor { b: number; a: number; } +export interface IShotsGroupSettings { + EndShotIndex: number; + ShotRecoilPositionStrength: Ixyz; + ShotRecoilRadianRange: Ixyz; + ShotRecoilRotationStrength: Ixyz; + StartShotIndex: number; +} +export declare enum ItemType { + NODE = "Node", + ITEM = "Item" +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/ITrader.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/ITrader.d.ts index 83353de..14ab409 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/ITrader.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/ITrader.d.ts @@ -1,10 +1,12 @@ -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; export interface ITrader { - assort: ITraderAssort; + assort?: ITraderAssort; base: ITraderBase; dialogue?: Record; - questassort: Record>; + questassort?: Record>; suits?: ISuit[]; + services?: ITraderServiceModel[]; } export interface ITraderBase { refreshTraderRagfairOffers: boolean; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/IAcceptFriendRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/IAcceptFriendRequestData.d.ts index 87461aa..0913eb5 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/IAcceptFriendRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/IAcceptFriendRequestData.d.ts @@ -2,6 +2,8 @@ export interface IAcceptFriendRequestData extends IBaseFriendRequest { } export interface ICancelFriendRequestData extends IBaseFriendRequest { } -export interface IBaseFriendRequest { - request_id: string; +export interface IDeclineFriendRequestData extends IBaseFriendRequest { +} +export interface IBaseFriendRequest { + profileId: string; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/IAddUserGroupMailRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/IAddUserGroupMailRequest.d.ts new file mode 100644 index 0000000..d1170d1 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/IAddUserGroupMailRequest.d.ts @@ -0,0 +1,4 @@ +export interface IAddUserGroupMailRequest { + dialogId: string; + uid: string; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/IChangeGroupMailOwnerRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/IChangeGroupMailOwnerRequest.d.ts new file mode 100644 index 0000000..63b413f --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/IChangeGroupMailOwnerRequest.d.ts @@ -0,0 +1,4 @@ +export interface IChangeGroupMailOwnerRequest { + dialogId: string; + uid: string; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/ICreateGroupMailRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/ICreateGroupMailRequest.d.ts new file mode 100644 index 0000000..176d7f3 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/ICreateGroupMailRequest.d.ts @@ -0,0 +1,4 @@ +export interface ICreateGroupMailRequest { + Name: string; + Users: string[]; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/IFriendRequestSendResponse.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/IFriendRequestSendResponse.d.ts index 06c40f3..fc311eb 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/IFriendRequestSendResponse.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/IFriendRequestSendResponse.d.ts @@ -1,5 +1,5 @@ export interface IFriendRequestSendResponse { status: number; - requestid: string; + requestId: string; retryAfter: number; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/IGetAllAttachmentsResponse.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/IGetAllAttachmentsResponse.d.ts index 2ddcf83..9bcfead 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/IGetAllAttachmentsResponse.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/IGetAllAttachmentsResponse.d.ts @@ -1,4 +1,4 @@ -import { Message } from "@spt-aki/models/eft/profile/IAkiProfile"; +import { Message } from "@spt/models/eft/profile/ISptProfile"; export interface IGetAllAttachmentsResponse { messages: Message[]; profiles: any[]; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/IGetFriendListDataResponse.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/IGetFriendListDataResponse.d.ts index 271be79..a11dbb3 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/IGetFriendListDataResponse.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/IGetFriendListDataResponse.d.ts @@ -1,4 +1,4 @@ -import { IUserDialogInfo } from "@spt-aki/models/eft/profile/IAkiProfile"; +import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; export interface IGetFriendListDataResponse { Friends: IUserDialogInfo[]; Ignore: string[]; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/IGetMailDialogViewRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/IGetMailDialogViewRequestData.d.ts index 3a2e349..1d271e4 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/IGetMailDialogViewRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/IGetMailDialogViewRequestData.d.ts @@ -1,4 +1,4 @@ -import { MessageType } from "@spt-aki/models/enums/MessageType"; +import { MessageType } from "@spt/models/enums/MessageType"; export interface IGetMailDialogViewRequestData { type: MessageType; dialogId: string; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/IGetMailDialogViewResponseData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/IGetMailDialogViewResponseData.d.ts index 091c128..ba28910 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/IGetMailDialogViewResponseData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/IGetMailDialogViewResponseData.d.ts @@ -1,4 +1,4 @@ -import { IUserDialogInfo, Message } from "@spt-aki/models/eft/profile/IAkiProfile"; +import { IUserDialogInfo, Message } from "@spt/models/eft/profile/ISptProfile"; export interface IGetMailDialogViewResponseData { messages: Message[]; profiles: IUserDialogInfo[]; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/IRemoveUserGroupMailRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/IRemoveUserGroupMailRequest.d.ts new file mode 100644 index 0000000..c7582f8 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/IRemoveUserGroupMailRequest.d.ts @@ -0,0 +1,4 @@ +export interface IRemoveUserGroupMailRequest { + dialogId: string; + uid: string; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/ISendMessageRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/ISendMessageRequest.d.ts index 5a755c0..d94c682 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/ISendMessageRequest.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/dialog/ISendMessageRequest.d.ts @@ -1,4 +1,4 @@ -import { MessageType } from "@spt-aki/models/enums/MessageType"; +import { MessageType } from "@spt/models/enums/MessageType"; export interface ISendMessageRequest { dialogId: string; type: MessageType; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/game/ICurrentGroupResponse.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/game/ICurrentGroupResponse.d.ts index 85c005b..eb01946 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/game/ICurrentGroupResponse.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/game/ICurrentGroupResponse.d.ts @@ -1,4 +1,4 @@ -import { MemberCategory } from "@spt-aki/models/enums/MemberCategory"; +import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface ICurrentGroupResponse { squad: ICurrentGroupSquadMember[]; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/game/IGameModeRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/game/IGameModeRequestData.d.ts new file mode 100644 index 0000000..57ff27b --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/game/IGameModeRequestData.d.ts @@ -0,0 +1,3 @@ +export interface IGameModeRequestData { + sessionMode: string | undefined; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/game/IGameModeResponse.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/game/IGameModeResponse.d.ts new file mode 100644 index 0000000..eaac690 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/game/IGameModeResponse.d.ts @@ -0,0 +1,8 @@ +export declare enum ESessionMode { + REGULAR = "regular", + PVE = "pve" +} +export interface IGameModeResponse { + gameMode: ESessionMode; + backendUrl: string; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/game/IGetRaidTimeResponse.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/game/IGetRaidTimeResponse.d.ts index 4dcf0a0..3fd248e 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/game/IGetRaidTimeResponse.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/game/IGetRaidTimeResponse.d.ts @@ -1,6 +1,6 @@ export interface IGetRaidTimeResponse { RaidTimeMinutes: number; - NewSurviveTimeSeconds: number; + NewSurviveTimeSeconds?: number; OriginalSurvivalTimeSeconds: number; ExitChanges: ExtractChange[]; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/game/IReportNicknameRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/game/IReportNicknameRequestData.d.ts deleted file mode 100644 index 087c58b..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/game/IReportNicknameRequestData.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface IReportNicknameRequestData { - uid: string; -} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/game/ISendReportRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/game/ISendReportRequest.d.ts new file mode 100644 index 0000000..b73d95c --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/game/ISendReportRequest.d.ts @@ -0,0 +1,4 @@ +export interface ISendReportRequest { + type: string; + uid: string; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/health/IOffraidEatRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/health/IOffraidEatRequestData.d.ts index 0629f8b..c969b08 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/health/IOffraidEatRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/health/IOffraidEatRequestData.d.ts @@ -1,4 +1,4 @@ -import { IBaseInteractionRequestData } from "@spt-aki/models/eft/common/request/IBaseInteractionRequestData"; +import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; export interface IOffraidEatRequestData extends IBaseInteractionRequestData { Action: "Eat"; item: string; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/health/IOffraidHealRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/health/IOffraidHealRequestData.d.ts index 47b7929..c2fe7ba 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/health/IOffraidHealRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/health/IOffraidHealRequestData.d.ts @@ -1,4 +1,4 @@ -import { IBaseInteractionRequestData } from "@spt-aki/models/eft/common/request/IBaseInteractionRequestData"; +import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; export interface IOffraidHealRequestData extends IBaseInteractionRequestData { Action: "Heal"; item: string; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutArea.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutArea.d.ts index bb00498..ca0eb07 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutArea.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutArea.d.ts @@ -1,3 +1,5 @@ +import { BonusSkillType } from "@spt/models/enums/BonusSkillType"; +import { BonusType } from "@spt/models/enums/BonusType"; export interface IHideoutArea { _id: string; type: number; @@ -66,8 +68,8 @@ export interface StageBonus { passive: boolean; production: boolean; visible: boolean; - skillType?: string; - type: string; + skillType?: BonusSkillType; + type: BonusType; filter?: string[]; icon?: string; /** CHANGES PER DUMP */ diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutProduction.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutProduction.d.ts index 8bed3cc..7373a4f 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutProduction.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutProduction.d.ts @@ -3,6 +3,7 @@ export interface IHideoutProduction { areaType: number; requirements: Requirement[]; productionTime: number; + /** Tpl of item being crafted */ endProduct: string; isEncoded: boolean; locked: boolean; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutScavCase.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutScavCase.d.ts index 5c8b983..d081d42 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutScavCase.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutScavCase.d.ts @@ -1,4 +1,4 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; +import { MinMax } from "@spt/models/common/MinMax"; export interface IHideoutScavCase { _id: string; ProductionTime: number; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts index 1ed542a..dfb92e2 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts @@ -2,6 +2,7 @@ export interface IHideoutSingleProductionStartRequestData { Action: "HideoutSingleProductionStart"; recipeId: string; items: Item[]; + tools: Item[]; timestamp: number; } export interface Item { diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IQteData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IQteData.d.ts index f842b84..7f507e1 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IQteData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IQteData.d.ts @@ -1,38 +1,108 @@ +import { Effect } from "@spt/models/eft/health/Effect"; +import { BodyPart } from "@spt/models/eft/health/IOffraidHealRequestData"; +import { QteActivityType } from "@spt/models/enums/hideout/QteActivityType"; +import { QteEffectType } from "@spt/models/enums/hideout/QteEffectType"; +import { QteResultType } from "@spt/models/enums/hideout/QteResultType"; +import { QteRewardType } from "@spt/models/enums/hideout/QteRewardType"; +import { QteType } from "@spt/models/enums/hideout/QteType"; +import { RequirementType } from "@spt/models/enums/hideout/RequirementType"; +import { HideoutAreas } from "@spt/models/enums/HideoutAreas"; +import { SkillTypes } from "@spt/models/enums/SkillTypes"; +import { Traders } from "@spt/models/enums/Traders"; export interface IQteData { - Id: string; - Type: string; - Area: string; - AreaLevel: number; - QuickTimeEvents: IQuickTimeEvent[]; - Requirements: IQteRequirement[]; - Results: Record; + id: string; + type: QteActivityType; + area: HideoutAreas; + areaLevel: number; + quickTimeEvents: IQuickTimeEvent[]; + requirements: (IAreaRequirement | IItemRequirement | ITraderUnlockRequirement | ITraderLoyaltyRequirement | ISkillRequirement | IResourceRequirement | IToolRequirement | IQuestRequirement | IHealthRequirement | IBodyPartBuffRequirement)[]; + results: Record; } export interface IQuickTimeEvent { - Type: string; - Position: number; - StartDelay: number; - EndDelay: number; - Speed: number; - SuccessRange: string; - Key: string; + type: QteType; + position: { + x: number; + y: number; + }; + startDelay: number; + endDelay: number; + speed: number; + successRange: { + x: number; + y: number; + }; + key: string; } export interface IQteRequirement { - type: string; + type: RequirementType; } export interface IQteResult { - Energy: number; - Hydration: number; - RewardsRange: IQteEffect[]; + energy: number; + hydration: number; + rewardsRange: IQteEffect[]; } export interface IQteEffect { - Type: string; - SkillId: string; + type: QteRewardType; + skillId: number; levelMultipliers: ISkillLevelMultiplier[]; - Time: number; - Weight: number; - Result: string; + time: number; + weight: number; + result: QteResultType; } export interface ISkillLevelMultiplier { level: number; multiplier: number; } +export interface IAreaRequirement extends IQteRequirement { + type: RequirementType.AREA; + areaType: HideoutAreas; + requiredLevel: number; +} +export interface ITraderUnlockRequirement extends IQteRequirement { + type: RequirementType.TRADER_UNLOCK; + traderId: Traders; +} +export interface ITraderLoyaltyRequirement extends IQteRequirement { + type: RequirementType.TRADER_LOYALTY; + traderId: Traders; + loyaltyLevel: number; +} +export interface ISkillRequirement extends IQteRequirement { + type: RequirementType.SKILL; + skillName: SkillTypes; + skillLevel: number; +} +export interface IResourceRequirement extends IQteRequirement { + type: RequirementType.RESOURCE; + templateId: string; + resource: number; +} +export interface IItemRequirement extends IQteRequirement { + type: RequirementType.ITEM; + templateId: string; + count: number; + isFunctional: boolean; + isEncoded: boolean; +} +export interface IToolRequirement extends IQteRequirement { + type: RequirementType.TOOL; + templateId: string; + count: number; + isFunctional: boolean; + isEncoded: boolean; +} +export interface IQuestRequirement extends IQteRequirement { + type: RequirementType.QUEST_COMPLETE; + questId: string; +} +export interface IHealthRequirement extends IQteRequirement { + type: RequirementType.HEALTH; + energy: number; + hydration: number; +} +export interface IBodyPartBuffRequirement extends IQteRequirement { + type: RequirementType.BODY_PART_BUFF; + effectName: Effect; + bodyPart: BodyPart; + excluded: boolean; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/httpResponse/INullResponseData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/httpResponse/INullResponseData.d.ts index a3ae838..26dc461 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/httpResponse/INullResponseData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/httpResponse/INullResponseData.d.ts @@ -1,5 +1,5 @@ export interface INullResponseData { err: number; errmsg: any; - data: null; + data: undefined; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inRaid/IInsuredItemsData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inRaid/IInsuredItemsData.d.ts index c49fb79..7ef22ce 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/inRaid/IInsuredItemsData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inRaid/IInsuredItemsData.d.ts @@ -3,4 +3,5 @@ export interface IInsuredItemsData { durability?: number; maxDurability?: number; hits?: number; + usedInQuest: boolean; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts new file mode 100644 index 0000000..a27bfbb --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts @@ -0,0 +1,5 @@ +import { Item } from "@spt/models/eft/common/tables/IItem"; +export interface IItemDeliveryRequestData { + items: Item[]; + traderId: string; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inRaid/ISaveProgressRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inRaid/ISaveProgressRequestData.d.ts index c658257..b654088 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/inRaid/ISaveProgressRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inRaid/ISaveProgressRequestData.d.ts @@ -1,7 +1,7 @@ -import { IPostRaidPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { ISyncHealthRequestData } from "@spt-aki/models/eft/health/ISyncHealthRequestData"; -import { IInsuredItemsData } from "@spt-aki/models/eft/inRaid/IInsuredItemsData"; -import { PlayerRaidEndState } from "@spt-aki/models/enums/PlayerRaidEndState"; +import { IPostRaidPmcData } from "@spt/models/eft/common/IPmcData"; +import { ISyncHealthRequestData } from "@spt/models/eft/health/ISyncHealthRequestData"; +import { IInsuredItemsData } from "@spt/models/eft/inRaid/IInsuredItemsData"; +import { PlayerRaidEndState } from "@spt/models/enums/PlayerRaidEndState"; export interface ISaveProgressRequestData { exit: PlayerRaidEndState; profile: IPostRaidPmcData; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/insurance/IInsureRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/insurance/IInsureRequestData.d.ts index f739ced..e3b018e 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/insurance/IInsureRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/insurance/IInsureRequestData.d.ts @@ -1,4 +1,4 @@ -import { IBaseInteractionRequestData } from "@spt-aki/models/eft/common/request/IBaseInteractionRequestData"; +import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; export interface IInsureRequestData extends IBaseInteractionRequestData { Action: "Insure"; tid: string; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IAddItemDirectRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IAddItemDirectRequest.d.ts new file mode 100644 index 0000000..1616901 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IAddItemDirectRequest.d.ts @@ -0,0 +1,8 @@ +import { Item } from "@spt/models/eft/common/tables/IItem"; +export interface IAddItemDirectRequest { + /** Item and child mods to add to player inventory */ + itemWithModsToAdd: Item[]; + foundInRaid: boolean; + callback: (buyCount: number) => void; + useSortingTable: boolean; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IAddItemRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IAddItemRequestData.d.ts index 24f3e31..3fa86dc 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IAddItemRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IAddItemRequestData.d.ts @@ -5,6 +5,6 @@ export interface IAddItemRequestData { } export interface AddItem { count: number; - isPreset?: boolean; + sptIsPreset?: boolean; item_id: string; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IAddItemTempObject.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IAddItemTempObject.d.ts index c818be6..7b3a6ea 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IAddItemTempObject.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IAddItemTempObject.d.ts @@ -1,4 +1,4 @@ -import { Item, Location } from "@spt-aki/models/eft/common/tables/IItem"; +import { Item, Location } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemTempObject { itemRef: Item; count: number; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IAddItemsDirectRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IAddItemsDirectRequest.d.ts new file mode 100644 index 0000000..386359e --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IAddItemsDirectRequest.d.ts @@ -0,0 +1,10 @@ +import { Item } from "@spt/models/eft/common/tables/IItem"; +export interface IAddItemsDirectRequest { + /** Item and child mods to add to player inventory */ + itemsWithModsToAdd: Item[][]; + foundInRaid: boolean; + /** Runs after EACH item with children is added */ + callback?: (buyCount: number) => void; + /** Should sorting table be used when no space found in stash */ + useSortingTable: boolean; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryAddRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryAddRequestData.d.ts index 2b90edb..63c5389 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryAddRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryAddRequestData.d.ts @@ -1,4 +1,4 @@ -import { Container, IInventoryBaseActionRequestData } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { Container, IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventoryAddRequestData extends IInventoryBaseActionRequestData { Action: "Add"; item: string; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts index 7e67a56..cc7269c 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts @@ -1,4 +1,4 @@ -import { IBaseInteractionRequestData } from "@spt-aki/models/eft/common/request/IBaseInteractionRequestData"; +import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; export interface IInventoryBaseActionRequestData extends IBaseInteractionRequestData { } export interface To { diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryBindRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryBindRequestData.d.ts index efa1a43..5af9fea 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryBindRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryBindRequestData.d.ts @@ -1,4 +1,4 @@ -import { IInventoryBaseActionRequestData } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventoryBindRequestData extends IInventoryBaseActionRequestData { Action: "Bind"; item: string; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryCreateMarkerRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryCreateMarkerRequestData.d.ts index 805b385..1469136 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryCreateMarkerRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryCreateMarkerRequestData.d.ts @@ -1,4 +1,4 @@ -import { IInventoryBaseActionRequestData } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventoryCreateMarkerRequestData extends IInventoryBaseActionRequestData { Action: "CreateMapMarker"; item: string; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryDeleteMarkerRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryDeleteMarkerRequestData.d.ts index e85f094..e946f9f 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryDeleteMarkerRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryDeleteMarkerRequestData.d.ts @@ -1,4 +1,4 @@ -import { IInventoryBaseActionRequestData } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventoryDeleteMarkerRequestData extends IInventoryBaseActionRequestData { Action: "DeleteMapMarker"; item: string; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryEditMarkerRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryEditMarkerRequestData.d.ts index d8080f5..87dcf86 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryEditMarkerRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryEditMarkerRequestData.d.ts @@ -1,4 +1,4 @@ -import { IInventoryBaseActionRequestData } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventoryEditMarkerRequestData extends IInventoryBaseActionRequestData { Action: "EditMapMarker"; item: string; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryExamineRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryExamineRequestData.d.ts index 07b0c03..58275ba 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryExamineRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryExamineRequestData.d.ts @@ -1,5 +1,5 @@ -import { OwnerInfo } from "@spt-aki/models/eft/common/request/IBaseInteractionRequestData"; -import { IInventoryBaseActionRequestData } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { OwnerInfo } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; +import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventoryExamineRequestData extends IInventoryBaseActionRequestData { Action: "Examine"; item: string; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryFoldRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryFoldRequestData.d.ts index 7623a90..7937743 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryFoldRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryFoldRequestData.d.ts @@ -1,4 +1,4 @@ -import { IInventoryBaseActionRequestData } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventoryFoldRequestData extends IInventoryBaseActionRequestData { Action: "Fold"; item: string; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryMergeRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryMergeRequestData.d.ts index af4e722..ad924ba 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryMergeRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryMergeRequestData.d.ts @@ -1,4 +1,4 @@ -import { IInventoryBaseActionRequestData } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventoryMergeRequestData extends IInventoryBaseActionRequestData { Action: "Merge"; item: string; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryMoveRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryMoveRequestData.d.ts index 9038510..afb6fd0 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryMoveRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryMoveRequestData.d.ts @@ -1,4 +1,4 @@ -import { IInventoryBaseActionRequestData, To } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { IInventoryBaseActionRequestData, To } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventoryMoveRequestData extends IInventoryBaseActionRequestData { Action: "Move"; item: string; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryReadEncyclopediaRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryReadEncyclopediaRequestData.d.ts index 6432159..ce61370 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryReadEncyclopediaRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryReadEncyclopediaRequestData.d.ts @@ -1,4 +1,4 @@ -import { IInventoryBaseActionRequestData } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventoryReadEncyclopediaRequestData extends IInventoryBaseActionRequestData { Action: "ReadEncyclopedia"; ids: string[]; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryRemoveRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryRemoveRequestData.d.ts index eda96e6..b9fa232 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryRemoveRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryRemoveRequestData.d.ts @@ -1,4 +1,4 @@ -import { IInventoryBaseActionRequestData } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventoryRemoveRequestData extends IInventoryBaseActionRequestData { Action: "Remove"; item: string; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventorySortRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventorySortRequestData.d.ts index b34bb25..d784c77 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventorySortRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventorySortRequestData.d.ts @@ -1,5 +1,5 @@ -import { Upd } from "@spt-aki/models/eft/common/tables/IItem"; -import { IInventoryBaseActionRequestData } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { Upd } from "@spt/models/eft/common/tables/IItem"; +import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventorySortRequestData extends IInventoryBaseActionRequestData { Action: "ApplyInventoryChanges"; changedItems: ChangedItem[]; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventorySplitRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventorySplitRequestData.d.ts index 4d29084..a4bb8a4 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventorySplitRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventorySplitRequestData.d.ts @@ -1,4 +1,4 @@ -import { Container, IInventoryBaseActionRequestData } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { Container, IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventorySplitRequestData extends IInventoryBaseActionRequestData { Action: "Split"; /** Id of item to split */ diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventorySwapRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventorySwapRequestData.d.ts index b32a1f7..ccf4796 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventorySwapRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventorySwapRequestData.d.ts @@ -1,5 +1,5 @@ -import { OwnerInfo } from "@spt-aki/models/eft/common/request/IBaseInteractionRequestData"; -import { IInventoryBaseActionRequestData, To } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { OwnerInfo } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; +import { IInventoryBaseActionRequestData, To } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventorySwapRequestData extends IInventoryBaseActionRequestData { Action: "Swap"; item: string; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryTagRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryTagRequestData.d.ts index 5d88eaf..5c9f651 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryTagRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryTagRequestData.d.ts @@ -1,4 +1,4 @@ -import { IInventoryBaseActionRequestData } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventoryTagRequestData extends IInventoryBaseActionRequestData { Action: "Tag"; item: string; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryToggleRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryToggleRequestData.d.ts index 138d987..0d8b1e4 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryToggleRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryToggleRequestData.d.ts @@ -1,4 +1,4 @@ -import { IInventoryBaseActionRequestData } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventoryToggleRequestData extends IInventoryBaseActionRequestData { Action: "Toggle"; item: string; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryTransferRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryTransferRequestData.d.ts index e98cae6..fe0327d 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryTransferRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryTransferRequestData.d.ts @@ -1,4 +1,4 @@ -import { IInventoryBaseActionRequestData } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventoryTransferRequestData extends IInventoryBaseActionRequestData { Action: "Transfer"; item: string; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryUnbindRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryUnbindRequestData.d.ts new file mode 100644 index 0000000..d3a4bd7 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryUnbindRequestData.d.ts @@ -0,0 +1,6 @@ +import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; +export interface IInventoryUnbindRequestData extends IInventoryBaseActionRequestData { + Action: "Unbind"; + item: string; + index: number; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IOpenRandomLootContainerRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IOpenRandomLootContainerRequestData.d.ts index 49a6792..c9b97e0 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IOpenRandomLootContainerRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IOpenRandomLootContainerRequestData.d.ts @@ -1,7 +1,7 @@ -import { IInventoryBaseActionRequestData } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IOpenRandomLootContainerRequestData extends IInventoryBaseActionRequestData { Action: "OpenRandomLootContainer"; - /** Container item opened */ + /** Container item id being opened */ item: string; to: To[]; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IRedeemProfileRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IRedeemProfileRequestData.d.ts index d351a8c..d39c9e6 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IRedeemProfileRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IRedeemProfileRequestData.d.ts @@ -1,4 +1,4 @@ -import { IInventoryBaseActionRequestData } from "./IInventoryBaseActionRequestData"; +import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IRedeemProfileRequestData extends IInventoryBaseActionRequestData { Action: "RedeemProfileReward"; events: IRedeemProfileRequestEvent[]; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/ISetFavoriteItems.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/ISetFavoriteItems.d.ts new file mode 100644 index 0000000..24aac37 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/ISetFavoriteItems.d.ts @@ -0,0 +1,6 @@ +import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; +export interface ISetFavoriteItems extends IInventoryBaseActionRequestData { + Action: "SetFavoriteItems"; + items: any[]; + timestamp: number; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/itemEvent/IEmptyItemEventRouterResponse.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/itemEvent/IEmptyItemEventRouterResponse.d.ts index f81bd59..f9165dc 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/itemEvent/IEmptyItemEventRouterResponse.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/itemEvent/IEmptyItemEventRouterResponse.d.ts @@ -1,4 +1,4 @@ -import { IItemEventRouterBase } from "@spt-aki/models/eft/itemEvent/IItemEventRouterBase"; +import { IItemEventRouterBase } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; export interface IEmptyItemEventRouterResponse extends IItemEventRouterBase { profileChanges: ""; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/itemEvent/IItemEventRouterBase.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/itemEvent/IItemEventRouterBase.d.ts index a1babfd..0c48014 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/itemEvent/IItemEventRouterBase.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/itemEvent/IItemEventRouterBase.d.ts @@ -1,9 +1,9 @@ -import { Health, IQuestStatus, Productive, Skills } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { Item, Upd } from "@spt-aki/models/eft/common/tables/IItem"; -import { IQuest } from "@spt-aki/models/eft/common/tables/IQuest"; -import { IPmcDataRepeatableQuest } from "@spt-aki/models/eft/common/tables/IRepeatableQuests"; -import { IRagfairOffer } from "@spt-aki/models/eft/ragfair/IRagfairOffer"; -import { EquipmentBuildType } from "@spt-aki/models/enums/EquipmentBuildType"; +import { Health, IQuestStatus, Productive, Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IQuest } from "@spt/models/eft/common/tables/IQuest"; +import { IPmcDataRepeatableQuest } from "@spt/models/eft/common/tables/IRepeatableQuests"; +import { IRagfairOffer } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { EquipmentBuildType } from "@spt/models/enums/EquipmentBuildType"; export interface IItemEventRouterBase { warnings: Warning[]; profileChanges: TProfileChanges | ""; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/itemEvent/IItemEventRouterResponse.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/itemEvent/IItemEventRouterResponse.d.ts index c5459ff..d4913be 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/itemEvent/IItemEventRouterResponse.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/itemEvent/IItemEventRouterResponse.d.ts @@ -1,3 +1,4 @@ -import { IItemEventRouterBase } from "@spt-aki/models/eft/itemEvent/IItemEventRouterBase"; +import { IItemEventRouterBase } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; +/** An object sent back to the game client that contains alterations the client must make to ensure server/client are in sync */ export interface IItemEventRouterResponse extends IItemEventRouterBase { } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/launcher/IChangeRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/launcher/IChangeRequestData.d.ts index b1b3e94..b0431d7 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/launcher/IChangeRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/launcher/IChangeRequestData.d.ts @@ -1,4 +1,4 @@ -import { ILoginRequestData } from "@spt-aki/models/eft/launcher/ILoginRequestData"; +import { ILoginRequestData } from "@spt/models/eft/launcher/ILoginRequestData"; export interface IChangeRequestData extends ILoginRequestData { change: string; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/launcher/IMiniProfile.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/launcher/IMiniProfile.d.ts index c12661a..b25a1e7 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/launcher/IMiniProfile.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/launcher/IMiniProfile.d.ts @@ -7,8 +7,8 @@ export interface IMiniProfile { prevexp: number; nextlvl: number; maxlvl: number; - akiData: AkiData; + sptData: SPTData; } -export interface AkiData { +export interface SPTData { version: string; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/launcher/IRegisterData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/launcher/IRegisterData.d.ts index b69d9ed..4a3c15e 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/launcher/IRegisterData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/launcher/IRegisterData.d.ts @@ -1,4 +1,4 @@ -import { ILoginRequestData } from "@spt-aki/models/eft/launcher/ILoginRequestData"; +import { ILoginRequestData } from "@spt/models/eft/launcher/ILoginRequestData"; export interface IRegisterData extends ILoginRequestData { edition: string; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/launcher/IRemoveProfileData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/launcher/IRemoveProfileData.d.ts index 2ad9694..59848ed 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/launcher/IRemoveProfileData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/launcher/IRemoveProfileData.d.ts @@ -1,2 +1,2 @@ -import { ILoginRequestData } from "@spt-aki/models/eft/launcher/ILoginRequestData"; +import { ILoginRequestData } from "@spt/models/eft/launcher/ILoginRequestData"; export type IRemoveProfileData = ILoginRequestData; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/location/IAirdropLootResult.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/location/IAirdropLootResult.d.ts index 219ee7e..cacc805 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/location/IAirdropLootResult.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/location/IAirdropLootResult.d.ts @@ -1,4 +1,4 @@ -import { LootItem } from "@spt-aki/models/spt/services/LootItem"; +import { LootItem } from "@spt/models/spt/services/LootItem"; export interface IAirdropLootResult { dropType: string; loot: LootItem[]; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IAcceptGroupInviteRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IAcceptGroupInviteRequest.d.ts deleted file mode 100644 index 1a4b8f7..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IAcceptGroupInviteRequest.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface IAcceptGroupInviteRequest { - requestId: string; -} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IAcceptGroupInviteResponse.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IAcceptGroupInviteResponse.d.ts deleted file mode 100644 index eea1ce6..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IAcceptGroupInviteResponse.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -export interface IAcceptGroupInviteResponse { - _id: string; - aid: number; - Info: PlayerInviteInfo; - isLeader: boolean; - isReady: boolean; -} -export interface PlayerInviteInfo { - Nickname: string; - Side: string; - Level: number; - MemberCategory: number; - GameVersion: string; - SavageLockTime: number; - SavageNickname: string; -} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/ICancelGroupInviteRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/ICancelGroupInviteRequest.d.ts deleted file mode 100644 index 71d79c7..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/ICancelGroupInviteRequest.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface ICancelGroupInviteRequest { - requestId: string; -} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/ICreateGroupRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/ICreateGroupRequestData.d.ts deleted file mode 100644 index 322a095..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/ICreateGroupRequestData.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { RaidMode } from "@spt-aki/models/enums/RaidMode"; -export interface ICreateGroupRequestData { - location: string; - raidMode: RaidMode; - startInGroup: boolean; -} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IGetGroupStatusResponse.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IGetGroupStatusResponse.d.ts deleted file mode 100644 index 8209ef5..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IGetGroupStatusResponse.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { MemberCategory } from "@spt-aki/models/enums/MemberCategory"; -export interface IGetGroupStatusResponse { - players: IPlayer[]; - maxPveCountExceeded: boolean; -} -export interface IPlayer { - aid: string; - _id: string; - lookingGroup: boolean; - IsLeader: boolean; - IsReady: boolean; - Info: ICurrentGroupMemberInfo; -} -export interface ICurrentGroupMemberInfo { - Nickname: string; - Side: string; - Level: string; - MemberCategory: MemberCategory; -} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IGetProfileRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IGetProfileRequestData.d.ts deleted file mode 100644 index 86b5bbd..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IGetProfileRequestData.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface IGetProfileRequestData { - profileId: string; -} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts index ed3dfab..959986c 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts @@ -1,32 +1,6 @@ -export interface IGetRaidConfigurationRequestData { +import { IRaidSettings } from "@spt/models/eft/match/IRaidSettings"; +export interface IGetRaidConfigurationRequestData extends IRaidSettings { keyId: string; - side: string; - location: string; - timeVariant: string; - raidMode: string; - metabolismDisabled: boolean; - playersSpawnPlace: string; - timeAndWeatherSettings: TimeAndWeatherSettings; - botSettings: BotSettings; - wavesSettings: WavesSettings; -} -export interface TimeAndWeatherSettings { - isRandomTime: boolean; - isRandomWeather: boolean; - cloudinessType: string; - rainType: string; - windType: string; - fogType: string; - timeFlowType: string; - hourOfDay: number; -} -export interface BotSettings { - isScavWars: boolean; - botAmount: string; -} -export interface WavesSettings { - botAmount: string; - botDifficulty: string; - isBosses: boolean; - isTaggedAndCursed: boolean; + CanShowGroupPreview: boolean; + MaxGroupCount: number; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IGroupCharacter.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IGroupCharacter.d.ts new file mode 100644 index 0000000..013930a --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IGroupCharacter.d.ts @@ -0,0 +1,39 @@ +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { MemberCategory } from "@spt/models/enums/MemberCategory"; +export interface IGroupCharacter { + _id: string; + aid: number; + Info: { + Nickname: string; + Side: string; + Level: number; + MemberCategory: MemberCategory; + GameVersion?: string; + SavageLockTime?: number; + SavageNickname?: string; + hasCoopExtension?: boolean; + }; + PlayerVisualRepresentation?: { + Info: { + Side: string; + Level: number; + Nickname: string; + MemberCategory: MemberCategory; + GameVersion: string; + }; + Customization: { + Head: string; + Body: string; + Feet: string; + Hands: string; + }; + Equipment: { + Id: string; + Items: Item[]; + }; + }; + isLeader: boolean; + isReady?: boolean; + region?: string; + lookingGroup?: boolean; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IJoinMatchRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IJoinMatchRequestData.d.ts deleted file mode 100644 index b9b7568..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IJoinMatchRequestData.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -export interface IJoinMatchRequestData { - groupid: string; - servers: Server[]; -} -export interface Server { - ping: number; - ip: string; - port: string; -} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IJoinMatchResult.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IJoinMatchResult.d.ts deleted file mode 100644 index e0e867f..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IJoinMatchResult.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -export interface IJoinMatchResult { - maxPveCountExceeded: boolean; - profiles: IJoinMatchPlayerProfile[]; -} -export interface IJoinMatchPlayerProfile { - profileid: string; - profileToken: string; - status: string; - sid: string; - ip: string; - port: number; - version: string; - location: string; - raidMode: string; - mode: string; - shortid: string; - additional_info: any[]; -} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IMatchGroupCurrentResponse.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IMatchGroupCurrentResponse.d.ts new file mode 100644 index 0000000..23bcba4 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IMatchGroupCurrentResponse.d.ts @@ -0,0 +1,4 @@ +import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; +export interface IMatchGroupCurrentResponse { + squad: IGroupCharacter[]; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IMatchGroupInviteSendRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IMatchGroupInviteSendRequest.d.ts new file mode 100644 index 0000000..e03cb90 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IMatchGroupInviteSendRequest.d.ts @@ -0,0 +1,4 @@ +export interface IMatchGroupInviteSendRequest { + to: string; + inLobby: boolean; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IMatchGroupPlayerRemoveRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IMatchGroupPlayerRemoveRequest.d.ts new file mode 100644 index 0000000..623eadb --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IMatchGroupPlayerRemoveRequest.d.ts @@ -0,0 +1,3 @@ +export interface IMatchGroupPlayerRemoveRequest { + aidToKick: string; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IMatchGroupStartGameRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IMatchGroupStartGameRequest.d.ts new file mode 100644 index 0000000..663ef1e --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IMatchGroupStartGameRequest.d.ts @@ -0,0 +1,5 @@ +import { IServer } from "@spt/models/eft/match/IServer"; +export interface IMatchGroupStartGameRequest { + groupId: string; + servers: IServer[]; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IGetGroupStatusRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IMatchGroupStatusRequest.d.ts similarity index 54% rename from TypeScript/23CustomAbstractChatBot/types/models/eft/match/IGetGroupStatusRequestData.d.ts rename to TypeScript/23CustomAbstractChatBot/types/models/eft/match/IMatchGroupStatusRequest.d.ts index 28b9500..ffac106 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IGetGroupStatusRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IMatchGroupStatusRequest.d.ts @@ -1,5 +1,5 @@ -import { RaidMode } from "@spt-aki/models/enums/RaidMode"; -export interface IGetGroupStatusRequestData { +import { RaidMode } from "@spt/models/enums/RaidMode"; +export interface IMatchGroupStatusRequest { location: string; savage: boolean; dt: string; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IMatchGroupStatusResponse.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IMatchGroupStatusResponse.d.ts new file mode 100644 index 0000000..7702ac7 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IMatchGroupStatusResponse.d.ts @@ -0,0 +1,5 @@ +import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; +export interface IMatchGroupStatusResponse { + players: IGroupCharacter[]; + maxPveCountExceeded: boolean; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IMatchGroupTransferRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IMatchGroupTransferRequest.d.ts new file mode 100644 index 0000000..4476387 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IMatchGroupTransferRequest.d.ts @@ -0,0 +1,3 @@ +export interface IMatchGroupTransferRequest { + aidToChange: string; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IProfileStatusRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IProfileStatusRequest.d.ts new file mode 100644 index 0000000..0667a99 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IProfileStatusRequest.d.ts @@ -0,0 +1,3 @@ +export interface IProfileStatusRequest { + groupId: number; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IProfileStatusResponse.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IProfileStatusResponse.d.ts new file mode 100644 index 0000000..8fa6186 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IProfileStatusResponse.d.ts @@ -0,0 +1,5 @@ +import { ISessionStatus } from "@spt/models/eft/match/ISessionStatus"; +export interface IProfileStatusResponse { + maxPveCountExceeded: boolean; + profiles: ISessionStatus[]; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IRaidSettings.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IRaidSettings.d.ts new file mode 100644 index 0000000..78a0c19 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IRaidSettings.d.ts @@ -0,0 +1,42 @@ +import { DateTime } from "@spt/models/enums/DateTime"; +import { PlayersSpawnPlace } from "@spt/models/enums/PlayersSpawnPlace"; +import { RaidMode } from "@spt/models/enums/RaidMode"; +import { BotAmount } from "@spt/models/enums/RaidSettings/BotAmount"; +import { BotDifficulty } from "@spt/models/enums/RaidSettings/BotDifficulty"; +import { CloudinessType } from "@spt/models/enums/RaidSettings/TimeAndWeather/CloudinessType"; +import { FogType } from "@spt/models/enums/RaidSettings/TimeAndWeather/FogType"; +import { RainType } from "@spt/models/enums/RaidSettings/TimeAndWeather/RainType"; +import { TimeFlowType } from "@spt/models/enums/RaidSettings/TimeAndWeather/TimeFlowType"; +import { WindSpeed } from "@spt/models/enums/RaidSettings/TimeAndWeather/WindSpeed"; +import { SideType } from "@spt/models/enums/SideType"; +export interface IRaidSettings { + location: string; + timeVariant: DateTime; + raidMode: RaidMode; + metabolismDisabled: boolean; + playersSpawnPlace: PlayersSpawnPlace; + timeAndWeatherSettings: TimeAndWeatherSettings; + botSettings: BotSettings; + wavesSettings: WavesSettings; + side: SideType; +} +export interface TimeAndWeatherSettings { + isRandomTime: boolean; + isRandomWeather: boolean; + cloudinessType: CloudinessType; + rainType: RainType; + fogType: FogType; + windType: WindSpeed; + timeFlowType: TimeFlowType; + hourOfDay: number; +} +export interface BotSettings { + isScavWars: boolean; + botAmount: BotAmount; +} +export interface WavesSettings { + botAmount: BotAmount; + botDifficulty: BotDifficulty; + isBosses: boolean; + isTaggedAndCursed: boolean; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IRemovePlayerFromGroupRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IRemovePlayerFromGroupRequest.d.ts deleted file mode 100644 index 4877c54..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IRemovePlayerFromGroupRequest.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface IRemovePlayerFromGroupRequest { - aidToKick: string; -} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IRequestIdRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IRequestIdRequest.d.ts new file mode 100644 index 0000000..755ca1b --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IRequestIdRequest.d.ts @@ -0,0 +1,3 @@ +export interface IRequestIdRequest { + requestId: string; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/ISendGroupInviteRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/ISendGroupInviteRequest.d.ts deleted file mode 100644 index 66d3d0e..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/ISendGroupInviteRequest.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface ISendGroupInviteRequest { - to: string; - inLobby: boolean; -} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IServer.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IServer.d.ts new file mode 100644 index 0000000..d7c30d8 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IServer.d.ts @@ -0,0 +1,5 @@ +export interface IServer { + ping: number; + ip: string; + port: number; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/ISessionStatus.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/ISessionStatus.d.ts new file mode 100644 index 0000000..c745cbf --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/ISessionStatus.d.ts @@ -0,0 +1,14 @@ +export interface ISessionStatus { + profileid: string; + profileToken: string; + status: string; + ip: string; + port: number; + sid: string; + version?: string; + location?: string; + raidMode?: string; + mode?: string; + shortId?: string; + additional_info?: any[]; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/ITransferGroupRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/ITransferGroupRequest.d.ts deleted file mode 100644 index e17c2a8..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/ITransferGroupRequest.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface ITransferGroupRequest { - aidToChange: string; -} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/notes/INoteActionData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/notes/INoteActionData.d.ts index 97575be..344c40d 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/notes/INoteActionData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/notes/INoteActionData.d.ts @@ -1,4 +1,4 @@ -import { IBaseInteractionRequestData } from "@spt-aki/models/eft/common/request/IBaseInteractionRequestData"; +import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; export interface INoteActionData extends IBaseInteractionRequestData { Action: string; index: number; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/notifier/INotifier.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/notifier/INotifier.d.ts index 74343d8..4ead272 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/notifier/INotifier.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/notifier/INotifier.d.ts @@ -1,4 +1,3 @@ -import { Message } from "@spt-aki/models/eft/profile/IAkiProfile"; export interface INotifierChannel { server: string; channel_id: string; @@ -6,19 +5,3 @@ export interface INotifierChannel { notifierServer: string; ws: string; } -export interface INotification { - type: NotificationType; - eventId: string; - dialogId?: string; - message?: Message; -} -export declare enum NotificationType { - RAGFAIR_OFFER_SOLD = "RagfairOfferSold", - RAGFAIR_RATING_CHANGE = "RagfairRatingChange", - /** ChatMessageReceived */ - NEW_MESSAGE = "new_message", - PING = "ping", - TRADER_SUPPLY = "TraderSupply", - TRADER_STANDING = "TraderStanding", - UNLOCK_TRADER = "UnlockTrader" -} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/notifier/ISelectProfileRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/notifier/ISelectProfileRequestData.d.ts deleted file mode 100644 index 2bc3d1e..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/notifier/ISelectProfileRequestData.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface ISelectProfileRequestData { - uid: string; -} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts index cbda924..f1123c1 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts @@ -1,4 +1,4 @@ -import { Skills } from "@spt-aki/models/eft/common/tables/IBotBase"; +import { Skills } from "@spt/models/eft/common/tables/IBotBase"; export interface IPlayerIncrementSkillLevelRequestData { _id: string; experience: number; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts index d54116a..3cb8533 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts @@ -1,8 +1,9 @@ -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; +import { Item } from "@spt/models/eft/common/tables/IItem"; export interface IPresetBuildActionRequestData { Action: string; - id: string; - name: string; - root: string; - items: Item[]; + Id: string; + /** name of preset given by player */ + Name: string; + Root: string; + Items: Item[]; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/presetBuild/IRemoveBuildRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/presetBuild/IRemoveBuildRequestData.d.ts index 0d61c4b..bcbdbce 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/presetBuild/IRemoveBuildRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/presetBuild/IRemoveBuildRequestData.d.ts @@ -1,4 +1,3 @@ export interface IRemoveBuildRequestData { - Action: "RemoveBuild"; id: string; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/ICompletedAchievementsResponse.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/ICompletedAchievementsResponse.d.ts new file mode 100644 index 0000000..09275bc --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/ICompletedAchievementsResponse.d.ts @@ -0,0 +1,3 @@ +export interface ICompletedAchievementsResponse { + elements: Record; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/IGetAchievementsResponse.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/IGetAchievementsResponse.d.ts new file mode 100644 index 0000000..6963fcf --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/IGetAchievementsResponse.d.ts @@ -0,0 +1,4 @@ +import { IAchievement } from "@spt/models/eft/common/tables/IAchievement"; +export interface IGetAchievementsResponse { + elements: IAchievement[]; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/IGetOtherProfileRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/IGetOtherProfileRequest.d.ts new file mode 100644 index 0000000..de3144b --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/IGetOtherProfileRequest.d.ts @@ -0,0 +1,3 @@ +export interface IGetOtherProfileRequest { + accountId: string; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/IGetOtherProfileResponse.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/IGetOtherProfileResponse.d.ts new file mode 100644 index 0000000..7df4eba --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/IGetOtherProfileResponse.d.ts @@ -0,0 +1,40 @@ +import { OverallCounters, Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +export interface IGetOtherProfileResponse { + id: string; + aid: number; + info: IOtherProfileInfo; + customization: IOtherProfileCustomization; + skills: Skills; + equipment: IOtherProfileEquipment; + achievements: Record; + favoriteItems: string[]; + pmcStats: IOtherProfileStats; + scavStats: IOtherProfileStats; +} +export interface IOtherProfileInfo { + nickname: string; + side: string; + experience: number; + memberCategory: number; + bannedState: boolean; + bannedUntil: number; + registrationDate: number; +} +export interface IOtherProfileCustomization { + head: string; + body: string; + feet: string; + hands: string; +} +export interface IOtherProfileEquipment { + Id: string; + Items: Item[]; +} +export interface IOtherProfileStats { + eft: IOtherProfileSubStats; +} +export interface IOtherProfileSubStats { + totalInGameTime: number; + overAllCounters: OverallCounters; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/IGetProfileSettingsRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/IGetProfileSettingsRequest.d.ts index 8168615..1141522 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/IGetProfileSettingsRequest.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/IGetProfileSettingsRequest.d.ts @@ -1,3 +1,5 @@ export interface IGetProfileSettingsRequest { + /** Chosen value for profile.Info.SelectedMemberCategory */ + memberCategory: number; squadInviteRestriction: boolean; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/ISearchFriendResponse.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/ISearchFriendResponse.d.ts index 96d88b2..d3cc7df 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/ISearchFriendResponse.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/ISearchFriendResponse.d.ts @@ -1,9 +1,11 @@ export interface ISearchFriendResponse { _id: string; + aid: number; Info: Info; } export interface Info { Nickname: string; Side: string; Level: number; + MemberCategory: number; } diff --git a/TypeScript/24WebSocket/types/models/eft/profile/IAkiProfile.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/ISptProfile.d.ts similarity index 83% rename from TypeScript/24WebSocket/types/models/eft/profile/IAkiProfile.d.ts rename to TypeScript/23CustomAbstractChatBot/types/models/eft/profile/ISptProfile.d.ts index a6d06bb..a8e742a 100644 --- a/TypeScript/24WebSocket/types/models/eft/profile/IAkiProfile.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/ISptProfile.d.ts @@ -1,17 +1,17 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { EquipmentBuildType } from "@spt-aki/models/enums/EquipmentBuildType"; -import { MemberCategory } from "@spt-aki/models/enums/MemberCategory"; -import { MessageType } from "@spt-aki/models/enums/MessageType"; -import { IProfileChangeEvent } from "@spt-aki/models/spt/dialog/ISendMessageDetails"; -export interface IAkiProfile { +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { EquipmentBuildType } from "@spt/models/enums/EquipmentBuildType"; +import { MemberCategory } from "@spt/models/enums/MemberCategory"; +import { MessageType } from "@spt/models/enums/MessageType"; +import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails"; +export interface ISptProfile { info: Info; characters: Characters; /** Clothing purchases */ suits: string[]; userbuilds: IUserBuilds; dialogues: Record; - aki: Aki; + spt: Spt; vitality: Vitality; inraid: Inraid; insurance: Insurance[]; @@ -86,13 +86,14 @@ export interface Dialogue { export interface IUserDialogInfo { _id: string; aid: number; - Info: IUserDialogDetails; + Info?: IUserDialogDetails; } export interface IUserDialogDetails { Nickname: string; Side: string; Level: number; MemberCategory: MemberCategory; + SelectedMemberCategory: MemberCategory; } export interface DialogueInfo { attachmentsNew: number; @@ -159,10 +160,17 @@ export interface DateTime { date: string; time: string; } -export interface Aki { +export interface Spt { + /** What version of SPT was this profile made with */ version: string; + /** What mods has this profile loaded at any point in time */ mods?: ModDetails[]; + /** What gifts has this profile received and how many */ receivedGifts: ReceivedGift[]; + /** item TPLs blacklisted from being sold on flea for this profile */ + blacklistedItemTpls?: string[]; + /** key: daily type */ + freeRepeatableRefreshUsedCount: Record; } export interface ModDetails { name: string; @@ -173,7 +181,8 @@ export interface ModDetails { } export interface ReceivedGift { giftId: string; - timestampAccepted: number; + timestampLastAccepted: number; + current: number; } export interface Vitality { health: Health; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/quests/IFailQuestRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/quests/IFailQuestRequestData.d.ts index 5881d91..a1a65ea 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/quests/IFailQuestRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/quests/IFailQuestRequestData.d.ts @@ -1,5 +1,5 @@ export interface IFailQuestRequestData { - Action: "QuestComplete"; + Action: "QuestFail"; qid: string; removeExcessItems: boolean; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/ragfair/IGetItemPriceResult.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/ragfair/IGetItemPriceResult.d.ts index e692b1b..a81eee6 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/ragfair/IGetItemPriceResult.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/ragfair/IGetItemPriceResult.d.ts @@ -1,4 +1,4 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; +import { MinMax } from "@spt/models/common/MinMax"; export interface IGetItemPriceResult extends MinMax { avg: number; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/ragfair/IGetOffersResult.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/ragfair/IGetOffersResult.d.ts index 8b753ae..f3420fa 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/ragfair/IGetOffersResult.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/ragfair/IGetOffersResult.d.ts @@ -1,4 +1,4 @@ -import { IRagfairOffer } from "@spt-aki/models/eft/ragfair/IRagfairOffer"; +import { IRagfairOffer } from "@spt/models/eft/ragfair/IRagfairOffer"; export interface IGetOffersResult { categories?: Record; offers: IRagfairOffer[]; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/ragfair/IRagfairOffer.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/ragfair/IRagfairOffer.d.ts index 043a986..eeeb79d 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/ragfair/IRagfairOffer.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/ragfair/IRagfairOffer.d.ts @@ -1,5 +1,5 @@ -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { MemberCategory } from "@spt-aki/models/enums/MemberCategory"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IRagfairOffer { sellResult?: SellResult[]; _id: string; @@ -9,23 +9,20 @@ export interface IRagfairOffer { intId: number; /** Handbook price */ itemsCost: number; - /** Rouble price */ + /** Rouble price per item */ requirementsCost: number; startTime: number; endTime: number; sellInOnePiece: boolean; + /** Rouble price - same as requirementsCost */ + summaryCost: number; + user: IRagfairOfferUser; + /** Trader only */ + unlimitedCount?: boolean; loyaltyLevel: number; buyRestrictionMax?: number; buyRestrictionCurrent?: number; - locked: boolean; - unlimitedCount: boolean; - /** Rouble price */ - summaryCost: number; - user: IRagfairOfferUser; - notAvailable: boolean; - /** TODO - implement this value - not currently used */ - CurrentItemCount: number; - priority: boolean; + locked?: boolean; } export interface OfferRequirement { _tpl: string; @@ -37,8 +34,10 @@ export interface IRagfairOfferUser { nickname?: string; rating?: number; memberType: MemberCategory; + selectedMemberCategory?: MemberCategory; avatar?: string; isRatingGrowing?: boolean; + aid?: number; } export interface SellResult { sellTime: number; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/ragfair/ISearchRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/ragfair/ISearchRequestData.d.ts index 52cb2d4..8261c5b 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/ragfair/ISearchRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/ragfair/ISearchRequestData.d.ts @@ -1,4 +1,4 @@ -import { RagfairSort } from "@spt-aki/models/enums/RagfairSort"; +import { RagfairSort } from "@spt/models/enums/RagfairSort"; export interface ISearchRequestData { page: number; limit: number; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/repair/IRepairActionDataRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/repair/IRepairActionDataRequest.d.ts index ceb3f7c..d51c1b9 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/repair/IRepairActionDataRequest.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/repair/IRepairActionDataRequest.d.ts @@ -1,4 +1,4 @@ -import { IBaseRepairActionDataRequest } from "@spt-aki/models/eft/repair/IBaseRepairActionDataRequest"; +import { IBaseRepairActionDataRequest } from "@spt/models/eft/repair/IBaseRepairActionDataRequest"; export interface IRepairActionDataRequest extends IBaseRepairActionDataRequest { Action: "Repair"; repairKitsInfo: RepairKitsInfo[]; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/repair/ITraderRepairActionDataRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/repair/ITraderRepairActionDataRequest.d.ts index 82b83c6..50f308e 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/repair/ITraderRepairActionDataRequest.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/repair/ITraderRepairActionDataRequest.d.ts @@ -1,4 +1,4 @@ -import { IBaseRepairActionDataRequest } from "@spt-aki/models/eft/repair/IBaseRepairActionDataRequest"; +import { IBaseRepairActionDataRequest } from "@spt/models/eft/repair/IBaseRepairActionDataRequest"; export interface ITraderRepairActionDataRequest extends IBaseRepairActionDataRequest { Action: "TraderRepair"; tid: string; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts index cc4336a..d64b2c9 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts @@ -1,6 +1,6 @@ -import { IProcessBaseTradeRequestData } from "@spt-aki/models/eft/trade/IProcessBaseTradeRequestData"; +import { IProcessBaseTradeRequestData } from "@spt/models/eft/trade/IProcessBaseTradeRequestData"; export interface IProcessBuyTradeRequestData extends IProcessBaseTradeRequestData { - Action: "buy_from_trader" | "TradingConfirm" | "RestoreHealth" | "" | "SptInsure" | "SptRepair"; + Action: "buy_from_trader" | "TradingConfirm" | "RestoreHealth" | "SptInsure" | "SptRepair" | ""; type: string; tid: string; item_id: string; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/trade/IProcessRagfairTradeRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/trade/IProcessRagfairTradeRequestData.d.ts index 889dfd1..66abc0b 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/trade/IProcessRagfairTradeRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/trade/IProcessRagfairTradeRequestData.d.ts @@ -1,13 +1,13 @@ export interface IProcessRagfairTradeRequestData { Action: string; - offers: Offer[]; + offers: IOfferRequest[]; } -export interface Offer { +export interface IOfferRequest { id: string; count: number; - items: Item[]; + items: IItemReqeust[]; } -export interface Item { +export interface IItemReqeust { id: string; count: number; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/trade/IProcessSellTradeRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/trade/IProcessSellTradeRequestData.d.ts index c0f91a0..459bd28 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/trade/IProcessSellTradeRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/trade/IProcessSellTradeRequestData.d.ts @@ -1,4 +1,4 @@ -import { IProcessBaseTradeRequestData } from "@spt-aki/models/eft/trade/IProcessBaseTradeRequestData"; +import { IProcessBaseTradeRequestData } from "@spt/models/eft/trade/IProcessBaseTradeRequestData"; export interface IProcessSellTradeRequestData extends IProcessBaseTradeRequestData { Action: "sell_to_trader"; type: string; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/trade/ISellScavItemsToFenceRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/trade/ISellScavItemsToFenceRequestData.d.ts index 1fc6025..3727ce4 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/trade/ISellScavItemsToFenceRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/trade/ISellScavItemsToFenceRequestData.d.ts @@ -1,6 +1,7 @@ -import { OwnerInfo } from "@spt-aki/models/eft/common/request/IBaseInteractionRequestData"; +import { OwnerInfo } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; export interface ISellScavItemsToFenceRequestData { Action: "SellAllFromSavage"; + totalValue: number; fromOwner: OwnerInfo; toOwner: OwnerInfo; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/weather/IWeatherData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/weather/IWeatherData.d.ts index b47189d..81bc746 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/weather/IWeatherData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/weather/IWeatherData.d.ts @@ -1,9 +1,11 @@ -import { WindDirection } from "@spt-aki/models/enums/WindDirection"; +import { Season } from "@spt/models/enums/Season"; +import { WindDirection } from "@spt/models/enums/WindDirection"; export interface IWeatherData { acceleration: number; time: string; date: string; - weather?: IWeather; + weather: IWeather; + season: Season; } export interface IWeather { pressure: number; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsAid.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsAid.d.ts new file mode 100644 index 0000000..310d507 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsAid.d.ts @@ -0,0 +1,4 @@ +import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; +export interface IWsAid extends IWsNotificationEvent { + aid: number; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsAidNickname.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsAidNickname.d.ts new file mode 100644 index 0000000..e623b19 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsAidNickname.d.ts @@ -0,0 +1,5 @@ +import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; +export interface IWsAidNickname extends IWsNotificationEvent { + aid: number; + Nickname: string; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsChatMessageReceived.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsChatMessageReceived.d.ts new file mode 100644 index 0000000..302d8f1 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsChatMessageReceived.d.ts @@ -0,0 +1,8 @@ +import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; +import { Message } from "@spt/models/eft/profile/ISptProfile"; +import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; +export interface IWsChatMessageReceived extends IWsNotificationEvent { + dialogId: string; + message: Message; + profiles?: IGroupCharacter[]; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsGroupId.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsGroupId.d.ts new file mode 100644 index 0000000..62a8c6f --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsGroupId.d.ts @@ -0,0 +1,4 @@ +import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; +export interface IWsGroupId extends IWsNotificationEvent { + groupId: string; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsGroupMatchInviteAccept.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsGroupMatchInviteAccept.d.ts new file mode 100644 index 0000000..8f100ac --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsGroupMatchInviteAccept.d.ts @@ -0,0 +1,4 @@ +import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; +import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; +export interface IWsGroupMatchInviteAccept extends IWsNotificationEvent, IGroupCharacter { +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsGroupMatchInviteDecline.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsGroupMatchInviteDecline.d.ts new file mode 100644 index 0000000..cf15409 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsGroupMatchInviteDecline.d.ts @@ -0,0 +1,5 @@ +import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; +export interface IWsGroupMatchInviteDecline extends IWsNotificationEvent { + aid: number; + Nickname: string; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsGroupMatchInviteSend.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsGroupMatchInviteSend.d.ts new file mode 100644 index 0000000..b52a49c --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsGroupMatchInviteSend.d.ts @@ -0,0 +1,7 @@ +import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; +import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; +export interface IWsGroupMatchInviteSend extends IWsNotificationEvent { + requestId: string; + from: number; + members: IGroupCharacter[]; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsGroupMatchLeaderChanged.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsGroupMatchLeaderChanged.d.ts new file mode 100644 index 0000000..a374183 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsGroupMatchLeaderChanged.d.ts @@ -0,0 +1,4 @@ +import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; +export interface IWsGroupMatchLeaderChanged extends IWsNotificationEvent { + owner: number; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsGroupMatchRaidReady.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsGroupMatchRaidReady.d.ts new file mode 100644 index 0000000..ab76918 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsGroupMatchRaidReady.d.ts @@ -0,0 +1,5 @@ +import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; +import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; +export interface IWsGroupMatchRaidReady extends IWsNotificationEvent { + extendedProfile: IGroupCharacter; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsGroupMatchRaidSettings.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsGroupMatchRaidSettings.d.ts new file mode 100644 index 0000000..5fa52af --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsGroupMatchRaidSettings.d.ts @@ -0,0 +1,5 @@ +import { IRaidSettings } from "@spt/models/eft/match/IRaidSettings"; +import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; +export interface IWsGroupMatchRaidSettings extends IWsNotificationEvent { + raidSettings: IRaidSettings; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsNotificationEvent.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsNotificationEvent.d.ts new file mode 100644 index 0000000..5fc72f3 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsNotificationEvent.d.ts @@ -0,0 +1,4 @@ +export interface IWsNotificationEvent { + type: string; + eventId: string; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsPing.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsPing.d.ts new file mode 100644 index 0000000..d43aa03 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsPing.d.ts @@ -0,0 +1,3 @@ +import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; +export interface IWsPing extends IWsNotificationEvent { +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsRagfairOfferSold.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsRagfairOfferSold.d.ts new file mode 100644 index 0000000..1c4c88e --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsRagfairOfferSold.d.ts @@ -0,0 +1,6 @@ +import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; +export interface IWsRagfairOfferSold extends IWsNotificationEvent { + offerId: string; + count: number; + handbookId: string; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsUserConfirmed.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsUserConfirmed.d.ts new file mode 100644 index 0000000..ac32e0d --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/ws/IWsUserConfirmed.d.ts @@ -0,0 +1,17 @@ +import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; +import { ProfileStatus } from "@spt/models/enums/ProfileStatus"; +import { RaidMode } from "@spt/models/enums/RaidMode"; +export interface IWsUserConfirmed extends IWsNotificationEvent { + profileid: string; + profileToken: string; + status: ProfileStatus; + ip: string; + port: number; + sid: string; + version: string; + location: string; + raidMode: RaidMode; + mode: string; + shortId: string; + additional_info: any[]; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/AmmoTypes.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/AmmoTypes.d.ts index 6aa332b..51ea4bb 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/enums/AmmoTypes.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/AmmoTypes.d.ts @@ -216,3 +216,7 @@ export declare enum Ammo26x75 { WHITE_FLARE = "62389bc9423ed1685422dc57", YELLOW_FLARE = "62389be94d5d474bf712e709" } +export declare enum Ammo68x51 { + SIG_FMJ = "6529302b8c26af6326029fb7", + SIG_HYBRID = "6529243824cbe3c74a05e5c1" +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/BackendErrorCodes.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/BackendErrorCodes.d.ts index 2a269b5..a36e9ce 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/enums/BackendErrorCodes.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/BackendErrorCodes.d.ts @@ -62,11 +62,12 @@ export declare enum BackendErrorCodes { BANNEDERRORCODE = 1513, INSUFFICIENTNUMBERINSTOCK = 1516, TOOMANYITEMSTOSELL = 1517, + INCORRECTCLIENTPRICE = 1519, EXAMINATIONFAILED = 22001, ITEMALREADYEXAMINED = 22002, UNKNOWNNGINXERROR = 9000, PARSERESPONSEERROR = 9001, - UNKNOWNMATCHMAKERERROR2 = 503000, + UNKNOWNMATCHMAKERERROR2 = 503000,// They have two of these...why :/ UNKNOWNGROUPERROR = 502000, GROUPREQUESTNOTFOUND = 502002, GROUPFULL = 502004, @@ -81,5 +82,6 @@ export declare enum BackendErrorCodes { PLAYERISNOTSEARCHINGFORGROUP = 502018, PLAYERALREADYLOOKINGFORGAME = 503001, PLAYERINRAID = 503002, - LIMITFORPRESETSREACHED = 504001 + LIMITFORPRESETSREACHED = 504001, + PLAYERPROFILENOTFOUND = 505001 } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/BaseClasses.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/BaseClasses.d.ts index a9acb69..65fc95e 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/enums/BaseClasses.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/BaseClasses.d.ts @@ -2,7 +2,7 @@ export declare enum BaseClasses { WEAPON = "5422acb9af1c889c16000029", UBGL = "55818b014bdc2ddc698b456b", ARMOR = "5448e54d4bdc2dcc718b4568", - ARMOREDEQUIPMENT = "57bef4c42459772e8d35a53b", + ARMORED_EQUIPMENT = "57bef4c42459772e8d35a53b", REPAIR_KITS = "616eb7aea207f41933308f46", HEADWEAR = "5a341c4086f77401f2541505", FACECOVER = "5a341c4686f77469e155819e", @@ -69,8 +69,6 @@ export declare enum BaseClasses { STATIONARY_CONTAINER = "567583764bdc2d98058b456e", POCKETS = "557596e64bdc2dc2118b4571", ARMBAND = "5b3f15d486f77432d0509248", - DOG_TAG_USEC = "59f32c3b86f77472a31742f0", - DOG_TAG_BEAR = "59f32bb586f774757e1e8442", JEWELRY = "57864a3d24597754843f8721", ELECTRONICS = "57864a66245977548f04a81f", BUILDING_MATERIAL = "57864ada245977548638de91", @@ -95,9 +93,20 @@ export declare enum BaseClasses { PORTABLE_RANGE_FINDER = "61605ddea09d851a0a0c1bbc", ITEM = "54009119af1c881c07000029", CYLINDER_MAGAZINE = "610720f290b75a49ff2e5e25", - AUXILARY_MOD = "5a74651486f7744e73386dd1", + AUXILIARY_MOD = "5a74651486f7744e73386dd1", BIPOD = "55818afb4bdc2dde698b456d", HEADPHONES = "5645bcb74bdc2ded0b8b4578", RANDOM_LOOT_CONTAINER = "62f109593b54472778797866", - STACKABLE_ITEM = "5661632d4bdc2d903d8b456b" + STACKABLE_ITEM = "5661632d4bdc2d903d8b456b", + BUILT_IN_INSERTS = "65649eb40bf0ed77b8044453", + ARMOR_PLATE = "644120aa86ffbe10ee032b6f", + CULTIST_AMULET = "64b69b0c8f3be32ed22682f8", + RADIO_TRANSMITTER = "62e9103049c018f425059f38", + HANDGUARD = "55818a104bdc2db9688b4569", + PISTOL_GRIP = "55818a684bdc2ddd698b456d", + RECEIVER = "55818a304bdc2db5418b457d", + BARREL = "555ef6e44bdc2de9068b457e", + CHARGING_HANDLE = "55818a6f4bdc2db9688b456b", + COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569 ", + HIDEOUT_AREA_CONTAINER = "63da6da4784a55176c018dba" } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/BonusSkillType.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/BonusSkillType.d.ts new file mode 100644 index 0000000..64d9c12 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/BonusSkillType.d.ts @@ -0,0 +1,7 @@ +export declare enum BonusSkillType { + PHYSICAL = "Physical", + COMBAT = "Combat", + SPECIAL = "Special", + PRACTICAL = "Practical", + MENTAL = "Mental" +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/BonusType.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/BonusType.d.ts new file mode 100644 index 0000000..466457f --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/BonusType.d.ts @@ -0,0 +1,33 @@ +export declare enum BonusType { + ENERGY_REGENERATION = "EnergyRegeneration", + HYDRATION_REGENERATION = "HydrationRegeneration", + HEALTH_REGENERATION = "HealthRegeneration", + EXPERIENCE_RATE = "ExperienceRate", + QUEST_MONEY_REWARD = "QuestMoneyReward", + SCAV_COOLDOWN_TIMER = "ScavCooldownTimer", + UNLOCK_ITEM_CRAFT = "UnlockItemCraft", + UNLOCK_ITEM_PASSIVE_CREATION = "UnlockItemPassiveCreation", + UNLOCK_RANDOM_ITEM_CREATION = "UnlockRandomItemCreation", + SKILL_LEVELING_BOOST = "SkillLevelingBoost", + DEBUFF_END_DELAY = "DebuffEndDelay", + RAGFAIR_COMMISSION = "RagfairCommission", + INSURANCE_RETURN_TIME = "InsuranceReturnTime", + UNLOCK_WEAPON_MODIFICATION = "UnlockWeaponModification", + UNLOCK_SCAV_PLAY = "UnlockScavPlay", + UNLOCK_ADD_OFFER = "UnlockAddOffer", + UNLOCK_ITEM_CHARGE = "UnlockItemCharge", + RECEIVE_ITEM_BONUS = "ReceiveItemBonus", + UNLOCK_UNIQUE_ID = "UnlockUniqueId", + INCREASE_CANISTER_SLOTS = "IncreaseCanisterSlots", + ADDITIONAL_SLOTS = "AdditionalSlots", + FUEL_CONSUMPTION = "FuelConsumption", + REPAIR_WEAPON_BONUS = "RepairWeaponBonus", + REPAIR_ARMOR_BONUS = "RepairArmorBonus", + UNLOCK_WEAPON_REPAIR = "UnlockWeaponRepair", + UNLOCK_ARMOR_REPAIR = "UnlockArmorRepair", + STASH_SIZE = "StashSize", + MAXIMUM_ENERGY_RESERVE = "MaximumEnergyReserve", + TEXT_BONUS = "TextBonus", + SKILL_GROUP_LEVELING_BOOST = "SkillGroupLevelingBoost", + STASH_ROWS = "StashRows" +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/ConfigTypes.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/ConfigTypes.d.ts index 27340c4..646fd55 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/enums/ConfigTypes.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/ConfigTypes.d.ts @@ -1,28 +1,29 @@ export declare enum ConfigTypes { - AIRDROP = "aki-airdrop", - BOT = "aki-bot", - PMC = "aki-pmc", - CORE = "aki-core", - HEALTH = "aki-health", - HIDEOUT = "aki-hideout", - HTTP = "aki-http", - IN_RAID = "aki-inraid", - INSURANCE = "aki-insurance", - INVENTORY = "aki-inventory", - ITEM = "aki-item", - LOCALE = "aki-locale", - LOCATION = "aki-location", - LOOT = "aki-loot", - MATCH = "aki-match", - PLAYERSCAV = "aki-playerscav", - PMC_CHAT_RESPONSE = "aki-pmcchatresponse", - QUEST = "aki-quest", - RAGFAIR = "aki-ragfair", - REPAIR = "aki-repair", - SCAVCASE = "aki-scavcase", - TRADER = "aki-trader", - WEATHER = "aki-weather", - SEASONAL_EVENT = "aki-seasonalevents", - LOST_ON_DEATH = "aki-lostondeath", - GIFTS = "aki-gifts" + AIRDROP = "spt-airdrop", + BOT = "spt-bot", + PMC = "spt-pmc", + CORE = "spt-core", + HEALTH = "spt-health", + HIDEOUT = "spt-hideout", + HTTP = "spt-http", + IN_RAID = "spt-inraid", + INSURANCE = "spt-insurance", + INVENTORY = "spt-inventory", + ITEM = "spt-item", + LOCALE = "spt-locale", + LOCATION = "spt-location", + LOOT = "spt-loot", + MATCH = "spt-match", + PLAYERSCAV = "spt-playerscav", + PMC_CHAT_RESPONSE = "spt-pmcchatresponse", + QUEST = "spt-quest", + RAGFAIR = "spt-ragfair", + REPAIR = "spt-repair", + SCAVCASE = "spt-scavcase", + TRADER = "spt-trader", + WEATHER = "spt-weather", + SEASONAL_EVENT = "spt-seasonalevents", + LOST_ON_DEATH = "spt-lostondeath", + GIFTS = "spt-gifts", + BTR = "spt-btr" } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/DateTime.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/DateTime.d.ts new file mode 100644 index 0000000..dcd1b5e --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/DateTime.d.ts @@ -0,0 +1,4 @@ +export declare enum DateTime { + CURR = "CURR", + PAST = "PAST" +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/ELocationName.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/ELocationName.d.ts index c52ae87..bb05be5 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/enums/ELocationName.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/ELocationName.d.ts @@ -4,6 +4,7 @@ export declare enum ELocationName { BIGMAP = "bigmap", WOODS = "Woods", SHORELINE = "Shoreline", + SANDBOX = "Sandbox", INTERCHANGE = "Interchange", LIGHTHOUSE = "Lighthouse", LABORATORY = "laboratory", diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/FleaOfferType.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/FleaOfferType.d.ts new file mode 100644 index 0000000..9915abf --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/FleaOfferType.d.ts @@ -0,0 +1,6 @@ +export declare enum FleaOfferType { + SINGLE = 0, + MULTI = 1, + PACK = 2, + UNKNOWN = 3 +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/GameEditions.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/GameEditions.d.ts new file mode 100644 index 0000000..01b1022 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/GameEditions.d.ts @@ -0,0 +1,8 @@ +export declare enum GameEditions { + STANDARD = "standard", + LEFT_BEHIND = "left_behind", + PREPARE_FOR_ESCAPE = "prepare_for_escape", + EDGE_OF_DARKNESS = "edge_of_darkness", + UNHEARD = "unheard_edition", + TOURNAMENT = "tournament_live" +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/ItemEventActions.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/ItemEventActions.d.ts index f43d4ba..f8a8b5a 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/enums/ItemEventActions.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/ItemEventActions.d.ts @@ -23,5 +23,7 @@ export declare enum ItemEventActions { REMOVE_BUILD = "RemoveBuild", SAVE_EQUIPMENT_BUILD = "SaveEquipmentBuild", REMOVE_EQUIPMENT_BUILD = "RemoveEquipmentBuild", - REDEEM_PROFILE_REWARD = "RedeemProfileReward" + REDEEM_PROFILE_REWARD = "RedeemProfileReward", + SET_FAVORITE_ITEMS = "SetFavoriteItems", + QUEST_FAIL = "QuestFail" } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/ItemTpl.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/ItemTpl.d.ts new file mode 100644 index 0000000..8512ea8 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/ItemTpl.d.ts @@ -0,0 +1,3803 @@ +export declare enum ItemTpl { + AMMOBOX_127X55_PS12A_10RND = "65702420bfc87b3a34093219", + AMMOBOX_127X55_PS12B_10RND = "648983d6b5a2df1c815a04ec", + AMMOBOX_127X55_PS12_10RND = "6570241bcfc010a0f50069f5", + AMMOBOX_12G_50_BMG_25RND = "65702469c5d7d4cb4d07855b", + AMMOBOX_12G_525MM_25RND = "65702426cfc010a0f50069f8", + AMMOBOX_12G_7MM_25RND = "657024361419851aef03e6fa", + AMMOBOX_12G_AP20_25RND = "64898838d5b4df6140000a20", + AMMOBOX_12G_CSP_25RND = "65702479c5d7d4cb4d07855e", + AMMOBOX_12G_DUALSABOT_25RND = "6570243fcfc010a0f50069fb", + AMMOBOX_12G_EXPRESS_25RND = "65702432bfc87b3a3409321c", + AMMOBOX_12G_FLECHETTE_25RND = "65702474bfc87b3a34093226", + AMMOBOX_12G_FTX_25RND = "65702449bfc87b3a34093223", + AMMOBOX_12G_GRIZZLY_40_25RND = "6570244ec5d7d4cb4d078558", + AMMOBOX_12G_MAGNUM_25RND = "6570243bbfc87b3a3409321f", + AMMOBOX_12G_PIRANHA_25RND = "657024431419851aef03e6fd", + AMMOBOX_12G_POLEVA3_25RND = "65702452cfc010a0f50069fe", + AMMOBOX_12G_POLEVA6U_25RND = "657024581419851aef03e700", + AMMOBOX_12G_RIP_5RND = "5c1127d0d174af29be75cf68", + AMMOBOX_12G_SFORMANCE_25RND = "6570247ebfc87b3a34093229", + AMMOBOX_12G_SLUG_25RND = "6570246fcfc010a0f5006a01", + AMMOBOX_20G_56MM_25RND = "657024831419851aef03e703", + AMMOBOX_20G_62MM_25RND = "6570248dcfc010a0f5006a04", + AMMOBOX_20G_73MM_25RND = "657024921419851aef03e706", + AMMOBOX_20G_75MM_25RND = "65702495c5d7d4cb4d078561", + AMMOBOX_20G_DEVASTATOR_25RND = "6570249bcfc010a0f5006a07", + AMMOBOX_20G_POLEVA3_25RND = "657024a4bfc87b3a3409322c", + AMMOBOX_20G_POLEVA6U_25RND = "657024a91419851aef03e70c", + AMMOBOX_20G_STAR_25RND = "6570249f1419851aef03e709", + AMMOBOX_23X75_BARRIKADA_5RND = "657024b8bfc87b3a34093232", + AMMOBOX_23X75_SHRAP10_5RND = "657024aebfc87b3a3409322f", + AMMOBOX_23X75_SHRAP25_5RND = "657024b31419851aef03e70f", + AMMOBOX_23X75_ZVEZDA_5RND = "657024bdc5d7d4cb4d078564", + AMMOBOX_366TKM_APM_20RND = "657023f81419851aef03e6f1", + AMMOBOX_366TKM_EKO_20RND = "657024011419851aef03e6f4", + AMMOBOX_366TKM_FMJ_20RND = "657023f1bfc87b3a34093210", + AMMOBOX_366TKM_GEKSA_20RND = "657023fcbfc87b3a34093213", + AMMOBOX_45ACP_AP_50RND = "6489879db5a2df1c815a04ef", + AMMOBOX_45ACP_FMJ_50RND = "6570240ecfc010a0f50069f2", + AMMOBOX_45ACP_HSHOCK_50RND = "65702406bfc87b3a34093216", + AMMOBOX_45ACP_LASERFMJ_50RND = "6570240a1419851aef03e6f7", + AMMOBOX_45ACP_RIP_50RND = "65702414c5d7d4cb4d078555", + AMMOBOX_46X30_ACTION_SX_40RND = "657024c81419851aef03e712", + AMMOBOX_46X30_AP_SX_40RND = "6489870774a806211e4fb685", + AMMOBOX_46X30_FMJ_SX_40RND = "657024cecfc010a0f5006a0a", + AMMOBOX_46X30_JSP_SX_40RND = "64aceaecc4eda9354b0226b6", + AMMOBOX_46X30_SUBSONIC_SX_40RND = "657024d2bfc87b3a34093235", + AMMOBOX_545X39_7N40_120RND = "6570900858b315e8b70a8a98", + AMMOBOX_545X39_7N40_30RND = "64898602f09d032aa9399d56", + AMMOBOX_545X39_BP_120RND = "5737292724597765e5728562", + AMMOBOX_545X39_BP_120RND_DAMAGED = "57372a7f24597766fe0de0c1", + AMMOBOX_545X39_BP_30RND = "57372ac324597767001bc261", + AMMOBOX_545X39_BS_120RND = "57372b832459776701014e41", + AMMOBOX_545X39_BS_120RND_DAMAGED = "57372bad245977670b7cd242", + AMMOBOX_545X39_BS_30RND = "57372bd3245977670b7cd243", + AMMOBOX_545X39_BT_120RND = "57372c21245977670937c6c2", + AMMOBOX_545X39_BT_120RND_DAMAGED = "57372c56245977685e584582", + AMMOBOX_545X39_BT_30RND = "57372c89245977685d4159b1", + AMMOBOX_545X39_FMJ_30RND = "5737330a2459776af32363a1", + AMMOBOX_545X39_HP_30RND = "5737339e2459776af261abeb", + AMMOBOX_545X39_PPBS_120RND = "657025ebc5d7d4cb4d078588", + AMMOBOX_545X39_PPBS_30RND = "5c1262a286f7743f8a69aab2", + AMMOBOX_545X39_PP_120RND = "57372d1b2459776862260581", + AMMOBOX_545X39_PP_120RND_DAMAGED = "57372d4c245977685a3da2a1", + AMMOBOX_545X39_PP_30RND = "57372db0245977685d4159b2", + AMMOBOX_545X39_PRS_120RND = "57372deb245977685d4159b3", + AMMOBOX_545X39_PRS_120RND_DAMAGED = "57372e1924597768553071c1", + AMMOBOX_545X39_PRS_30RND = "57372e4a24597768553071c2", + AMMOBOX_545X39_PS_120RND = "57372e73245977685d4159b4", + AMMOBOX_545X39_PS_120RND_DAMAGED = "57372e94245977685648d3e1", + AMMOBOX_545X39_PS_30RND = "57372ebf2459776862260582", + AMMOBOX_545X39_SP_30RND = "573733c72459776b0b7b51b0", + AMMOBOX_545X39_T_120RND = "57372ee1245977685d4159b5", + AMMOBOX_545X39_T_120RND_DAMAGED = "57372f2824597769a270a191", + AMMOBOX_545X39_T_30RND = "57372f5c24597769917c0131", + AMMOBOX_545X39_US_120RND = "57372f7d245977699b53e301", + AMMOBOX_545X39_US_120RND_DAMAGED = "57372fc52459776998772ca1", + AMMOBOX_545X39_US_30RND = "5737300424597769942d5a01", + AMMOBOX_556X45_FMJ_100RND = "657026451419851aef03e733", + AMMOBOX_556X45_FMJ_50RND = "657024d8c5d7d4cb4d078567", + AMMOBOX_556X45_HP_100RND = "6570264acfc010a0f5006a50", + AMMOBOX_556X45_HP_50RND = "657024debfc87b3a34093238", + AMMOBOX_556X45_M855A1_100RND = "65702652cfc010a0f5006a53", + AMMOBOX_556X45_M855A1_50RND = "657024e3c5d7d4cb4d07856a", + AMMOBOX_556X45_M855_100RND = "6570264d1419851aef03e736", + AMMOBOX_556X45_M855_50RND = "5447ac644bdc2d6c208b4567", + AMMOBOX_556X45_M856A1_100RND = "6570265bcfc010a0f5006a56", + AMMOBOX_556X45_M856A1_50RND = "657024ecc5d7d4cb4d07856d", + AMMOBOX_556X45_M856_100RND = "65702656c5d7d4cb4d078591", + AMMOBOX_556X45_M856_50RND = "657024e8cfc010a0f5006a0d", + AMMOBOX_556X45_M995_100RND = "6570265f1419851aef03e739", + AMMOBOX_556X45_M995_50RND = "657024f01419851aef03e715", + AMMOBOX_556X45_RRLP_100RND = "65702664cfc010a0f5006a59", + AMMOBOX_556X45_RRLP_50RND = "657024f5cfc010a0f5006a10", + AMMOBOX_556X45_SOST_100RND = "6570266bc5d7d4cb4d078594", + AMMOBOX_556X45_SOST_50RND = "657024f9bfc87b3a3409323b", + AMMOBOX_556X45_SSA_AP_100RND = "65702681bfc87b3a3409325f", + AMMOBOX_556X45_SSA_AP_50RND = "64898583d5b4df6140000a1d", + AMMOBOX_556X45_WARMAGE_20RND = "5c11279ad174af029d64592b", + AMMOBOX_57X28_L191_50RND = "657025161419851aef03e718", + AMMOBOX_57X28_R37F_50RND = "6570251ccfc010a0f5006a13", + AMMOBOX_57X28_R37X_50RND = "65702520bfc87b3a3409323e", + AMMOBOX_57X28_SB193_50RND = "65702524cfc010a0f5006a16", + AMMOBOX_57X28_SS190_50RND = "648986bbc827d4637f01791e", + AMMOBOX_57X28_SS197SR_50RND = "657025281419851aef03e71b", + AMMOBOX_57X28_SS198LF_50RND = "6570252dbfc87b3a34093241", + AMMOBOX_762X25TT_AKBS_25RND = "6570253ec5d7d4cb4d078573", + AMMOBOX_762X25TT_FMJ43_25RND = "65702532cfc010a0f5006a19", + AMMOBOX_762X25TT_LRNPC_25RND = "6570253acfc010a0f5006a1c", + AMMOBOX_762X25TT_LRN_25RND = "65702536c5d7d4cb4d078570", + AMMOBOX_762X25TT_PST_25RND = "65702546cfc010a0f5006a1f", + AMMOBOX_762X25TT_PT_25RND = "6570254abfc87b3a34093244", + AMMOBOX_762X25TT_P_25RND = "657025421419851aef03e71e", + AMMOBOX_762X35_AP_50RND = "648985c074a806211e4fb682", + AMMOBOX_762X35_CBJ_50RND = "657023a9126cc4a57d0e17a6", + AMMOBOX_762X35_FMJ_50RND = "657023bebfc87b3a34093207", + AMMOBOX_762X35_M62_50RND = "657023b1cfc010a0f50069e5", + AMMOBOX_762X35_VMAX_50RND = "657023b71419851aef03e6e8", + AMMOBOX_762X35_WHISPER_50RND = "657023c61419851aef03e6eb", + AMMOBOX_762X39_BP_20RND = "64acea16c4eda9354b0226b0", + AMMOBOX_762X39_FMJ_20RND = "64ace9d9b5bf5e95f50a4c1d", + AMMOBOX_762X39_HP_20RND = "64acea2c03378853630da53e", + AMMOBOX_762X39_MAI_AP_20RND = "6489851fc827d4637f01791b", + AMMOBOX_762X39_PP_20RND = "64ace9f9c4eda9354b0226aa", + AMMOBOX_762X39_PS_20RND = "5649ed104bdc2d3d1c8b458b", + AMMOBOX_762X39_SP_20RND = "64ace9ff03378853630da538", + AMMOBOX_762X39_T45M1_20RND = "64acea09c4eda9354b0226ad", + AMMOBOX_762X39_US_20RND = "64acea0d03378853630da53b", + AMMOBOX_762X51_BCP_FMJ_20RND = "65702561cfc010a0f5006a28", + AMMOBOX_762X51_M61_20RND = "6570254fcfc010a0f5006a22", + AMMOBOX_762X51_M62_20RND = "65702554bfc87b3a34093247", + AMMOBOX_762X51_M80_20RND = "65702558cfc010a0f5006a25", + AMMOBOX_762X51_M993_20RND = "648984e3f09d032aa9399d53", + AMMOBOX_762X51_TCW_SP_20RND = "65702566bfc87b3a3409324d", + AMMOBOX_762X51_ULTRA_NOSLER_20RND = "6570255dbfc87b3a3409324a", + AMMOBOX_762X54R_BS_20RND = "648984b8d5b4df6140000a1a", + AMMOBOX_762X54R_BT_20RND = "65702572c5d7d4cb4d078576", + AMMOBOX_762X54R_FMJ_20RND = "64aceac0c4eda9354b0226b3", + AMMOBOX_762X54R_HP_BT_20RND = "64acee6903378853630da544", + AMMOBOX_762X54R_LPS_20RND = "65702577cfc010a0f5006a2c", + AMMOBOX_762X54R_PS_20RND = "6570257cc5d7d4cb4d078579", + AMMOBOX_762X54R_SNB_20RND = "560d75f54bdc2da74d8b4573", + AMMOBOX_762X54R_SP_BT_20RND = "64aceab0426a303417060654", + AMMOBOX_762X54R_T46M_20RND = "65702584cfc010a0f5006a2f", + AMMOBOX_86X70_AP_20RND = "6489848173c462723909a14b", + AMMOBOX_86X70_FMJ_20RND = "657023ccbfc87b3a3409320a", + AMMOBOX_86X70_TACX_20RND = "657023d6cfc010a0f50069e9", + AMMOBOX_86X70_UCW_20RND = "657023dabfc87b3a3409320d", + AMMOBOX_9X18PM_BZHT_16RND = "573722e82459776104581c21", + AMMOBOX_9X18PM_BZHT_50RND = "65702606cfc010a0f5006a3e", + AMMOBOX_9X18PM_PBM_16RND = "5737250c2459776125652acc", + AMMOBOX_9X18PM_PBM_50RND = "65702610cfc010a0f5006a41", + AMMOBOX_9X18PM_PPE_16RND = "573725b0245977612125bae2", + AMMOBOX_9X18PM_PPE_50RND = "65702619bfc87b3a34093259", + AMMOBOX_9X18PM_PPT_16RND = "5737260b24597761224311f2", + AMMOBOX_9X18PM_PPT_50RND = "65702614c5d7d4cb4d07858b", + AMMOBOX_9X18PM_PRS_16RND = "5737266524597761006c6a8c", + AMMOBOX_9X18PM_PRS_50RND = "6570261dc5d7d4cb4d07858e", + AMMOBOX_9X18PM_PSO_16RND = "5737273924597765dd374461", + AMMOBOX_9X18PM_PSO_50RND = "65702629cfc010a0f5006a47", + AMMOBOX_9X18PM_PSTM_16RND = "5737256c2459776125652acd", + AMMOBOX_9X18PM_PSTM_50RND = "65702640cfc010a0f5006a4d", + AMMOBOX_9X18PM_PST_16RND = "573727c624597765cc785b5b", + AMMOBOX_9X18PM_PST_50RND = "6570262d1419851aef03e72d", + AMMOBOX_9X18PM_PSV_16RND = "5737280e24597765cc785b5c", + AMMOBOX_9X18PM_PSV_50RND = "657026251419851aef03e72a", + AMMOBOX_9X18PM_PS_PPO_16RND = "573726d824597765d96be361", + AMMOBOX_9X18PM_PS_PPO_50RND = "65702621cfc010a0f5006a44", + AMMOBOX_9X18PM_P_16RND = "573724b42459776125652ac2", + AMMOBOX_9X18PM_P_50RND = "6570260c1419851aef03e727", + AMMOBOX_9X18PM_RG028_16RND = "5737287724597765e1625ae2", + AMMOBOX_9X18PM_RG028_50RND = "65702630cfc010a0f5006a4a", + AMMOBOX_9X18PM_SP7_16RND = "573728cc24597765cc785b5d", + AMMOBOX_9X18PM_SP7_50RND = "657026341419851aef03e730", + AMMOBOX_9X18PM_SP8_16RND = "573728f324597765e5728561", + AMMOBOX_9X18PM_SP8_50RND = "65702639bfc87b3a3409325c", + AMMOBOX_9X19_AP_63_50RND = "65702591c5d7d4cb4d07857c", + AMMOBOX_9X19_GT_50RND = "657025961419851aef03e721", + AMMOBOX_9X19_LUGER_CCI_50RND = "6570259bc5d7d4cb4d07857f", + AMMOBOX_9X19_M882_50RND = "64aceafcb5bf5e95f50a4c20", + AMMOBOX_9X19_PBP_50RND = "648987d673c462723909a151", + AMMOBOX_9X19_PSO_50RND = "657025a4bfc87b3a34093250", + AMMOBOX_9X19_PST_16RND = "5739d41224597779c3645501", + AMMOBOX_9X19_PST_50RND = "657025a81419851aef03e724", + AMMOBOX_9X19_QUAKEMAKER_50RND = "6570259fcfc010a0f5006a32", + AMMOBOX_9X19_RIP_20RND = "5c1127bdd174af44217ab8b9", + AMMOBOX_9X21_7N42_30RND = "6579847c5a0e5879d12f2873", + AMMOBOX_9X21_7U4_30RND = "6579846c1ec1943afb14c15a", + AMMOBOX_9X21_BT_30RND = "6489875745f9ca4ba51c4808", + AMMOBOX_9X21_PE_30RND = "657025c9cfc010a0f5006a38", + AMMOBOX_9X21_PS_30RND = "657025c4c5d7d4cb4d078582", + AMMOBOX_9X21_P_30RND = "657025bbcfc010a0f5006a35", + AMMOBOX_9X33R_FMJ_25RND = "657023decfc010a0f50069ec", + AMMOBOX_9X33R_HP_25RND = "657023e31419851aef03e6ee", + AMMOBOX_9X33R_JHP_25RND = "657023e7c5d7d4cb4d078552", + AMMOBOX_9X33R_SP_25RND = "657023eccfc010a0f50069ef", + AMMOBOX_9X39_BP_20RND = "6489854673c462723909a14e", + AMMOBOX_9X39_BP_8RND = "5c1260dc86f7746b106e8748", + AMMOBOX_9X39_FMJ_20RND = "657984a50fbff513dd435765", + AMMOBOX_9X39_PAB9_20RND = "657025cfbfc87b3a34093253", + AMMOBOX_9X39_SP5_20RND = "657025d4c5d7d4cb4d078585", + AMMOBOX_9X39_SP6_20RND = "657025dabfc87b3a34093256", + AMMOBOX_9X39_SPP_20RND = "657025dfcfc010a0f5006a3b", + AMMOBOX_9X39_SPP_8RND = "5c12619186f7743f871c8a32", + AMMO_127X108_B32 = "5cde8864d7f00c0010373be1", + AMMO_127X108_BZT44M = "5d2f2ab648f03550091993ca", + AMMO_127X55_PS12 = "5cadf6ddae9215051e1c23b2", + AMMO_127X55_PS12A = "5cadf6e5ae921500113bb973", + AMMO_127X55_PS12B = "5cadf6eeae921500134b2799", + AMMO_12G_50_BMG = "5d6e68c4a4b9361b93413f79", + AMMO_12G_525MM = "5d6e6772a4b936088465b17c", + AMMO_12G_7MM = "560d5e524bdc2d25448b4571", + AMMO_12G_AP20 = "5d6e68a8a4b9360b6c0d54e2", + AMMO_12G_CSP = "5d6e68b3a4b9361bca7e50b5", + AMMO_12G_DUALSABOT = "5d6e68dea4b9361bcc29e659", + AMMO_12G_EXPRESS = "5d6e67fba4b9361bc73bc779", + AMMO_12G_FLECHETTE = "5d6e6911a4b9361bd5780d52", + AMMO_12G_FTX = "5d6e68e6a4b9361c140bcfe0", + AMMO_12G_GRIZZLY_40 = "5d6e6869a4b9361c140bcfde", + AMMO_12G_MAGNUM = "5d6e6806a4b936088465b17e", + AMMO_12G_PIRANHA = "64b8ee384b75259c590fa89b", + AMMO_12G_POLEVA3 = "5d6e6891a4b9361bd473feea", + AMMO_12G_POLEVA6U = "5d6e689ca4b9361bc8618956", + AMMO_12G_RIP = "5c0d591486f7744c505b416f", + AMMO_12G_SFORMANCE = "5d6e68d1a4b93622fe60e845", + AMMO_12G_SLUG = "58820d1224597753c90aeb13", + AMMO_20G_56MM = "5d6e695fa4b936359b35d852", + AMMO_20G_62MM = "5d6e69b9a4b9361bc8618958", + AMMO_20G_73MM = "5d6e69c7a4b9360b6c0d54e4", + AMMO_20G_75MM = "5a38ebd9c4a282000d722a5b", + AMMO_20G_DEVASTATOR = "5d6e6a5fa4b93614ec501745", + AMMO_20G_POLEVA3 = "5d6e6a53a4b9361bd473feec", + AMMO_20G_POLEVA6U = "5d6e6a42a4b9364f07165f52", + AMMO_20G_STAR = "5d6e6a05a4b93618084f58d0", + AMMO_20X1MM_DISK = "6601546f86889319850bd566", + AMMO_23X75_BARRIKADA = "5e85aa1a988a8701445df1f5", + AMMO_23X75_SHRAP10 = "5e85a9a6eacf8c039e4e2ac1", + AMMO_23X75_SHRAP25 = "5f647f31b6238e5dd066e196", + AMMO_23X75_ZVEZDA = "5e85a9f4add9fe03027d9bf1", + AMMO_26X75_FLARE = "62389bc9423ed1685422dc57", + AMMO_26X75_GREEN = "62389aaba63f32501b1b444f", + AMMO_26X75_RED = "62389ba9a63f32501b1b4451", + AMMO_26X75_SIGNAL = "635267f063651329f75a4ee8", + AMMO_26X75_SIGNAL_FLARE_GREEN = "624c0570c9b794431568f5d5", + AMMO_26X75_SIGNAL_FLARE_RED = "624c09cfbc2e27219346d955", + AMMO_26X75_SIGNAL_FLARE_WHITE = "624c09da2cec124eb67c1046", + AMMO_26X75_SIGNAL_FLARE_YELLOW = "624c09e49b98e019a3315b66", + AMMO_26X75_YELLOW = "62389be94d5d474bf712e709", + AMMO_30X29_VOG30 = "5d70e500a4b9364de70d38ce", + AMMO_366TKM_APM = "5f0596629e22f464da6bbdd9", + AMMO_366TKM_EKO = "59e655cb86f77411dc52a77b", + AMMO_366TKM_FMJ = "59e6542b86f77411dc52a77a", + AMMO_366TKM_GEKSA = "59e6658b86f77411d949b250", + AMMO_40MMRU_VOG25 = "5656eb674bdc2d35148b457c", + AMMO_40X46_M381 = "5ede474b0c226a66f5402622", + AMMO_40X46_M386 = "5ede475b549eed7c6d5c18fb", + AMMO_40X46_M406 = "5ede4739e0350d05467f73e8", + AMMO_40X46_M433 = "5f0c892565703e5c461894e9", + AMMO_40X46_M441 = "5ede47405b097655935d7d16", + AMMO_40X46_M576 = "5ede475339ee016e8c534742", + AMMO_45ACP_AP = "5efb0cabfb3e451d70735af5", + AMMO_45ACP_FMJ = "5e81f423763d9f754677bf2e", + AMMO_45ACP_HYDRASHOK = "5efb0fc6aeb21837e749c801", + AMMO_45ACP_LASERMATCH = "5efb0d4f4bc50b58e81710f3", + AMMO_45ACP_RIP = "5ea2a8e200685063ec28c05a", + AMMO_46X30_ACTION_SX = "5ba26812d4351e003201fef1", + AMMO_46X30_AP_SX = "5ba26835d4351e0035628ff5", + AMMO_46X30_FMJ_SX = "5ba2678ad4351e44f824b344", + AMMO_46X30_JSP_SX = "64b6979341772715af0f9c39", + AMMO_46X30_SUBSONIC_SX = "5ba26844d4351e00334c9475", + AMMO_545X39_7N40 = "61962b617c6c7b169525f168", + AMMO_545X39_BP = "56dfef82d2720bbd668b4567", + AMMO_545X39_BS = "56dff026d2720bb8668b4567", + AMMO_545X39_BT = "56dff061d2720bb5668b4567", + AMMO_545X39_FMJ = "56dff0bed2720bb0668b4567", + AMMO_545X39_HP = "56dff216d2720bbd668b4568", + AMMO_545X39_PP = "56dff2ced2720bb4668b4567", + AMMO_545X39_PPBS = "5c0d5e4486f77478390952fe", + AMMO_545X39_PRS = "56dff338d2720bbd668b4569", + AMMO_545X39_PS = "56dff3afd2720bba668b4567", + AMMO_545X39_SP = "56dff421d2720b5f5a8b4567", + AMMO_545X39_T = "56dff4a2d2720bbd668b456a", + AMMO_545X39_US = "56dff4ecd2720b5f5a8b4568", + AMMO_556X45_6MM_BB = "6241c316234b593b5676b637", + AMMO_556X45_FMJ = "59e6920f86f77411d82aa167", + AMMO_556X45_HP = "59e6927d86f77411da468256", + AMMO_556X45_M855 = "54527a984bdc2d4e668b4567", + AMMO_556X45_M855A1 = "54527ac44bdc2d36668b4567", + AMMO_556X45_M856 = "59e68f6f86f7746c9f75e846", + AMMO_556X45_M856A1 = "59e6906286f7746c9f75e847", + AMMO_556X45_M995 = "59e690b686f7746c9f75e848", + AMMO_556X45_RRLP = "59e6918f86f7746c9f75e849", + AMMO_556X45_SOST = "60194943740c5d77f6705eea", + AMMO_556X45_SSA_AP = "601949593ae8f707c4608daa", + AMMO_556X45_WARMAGE = "5c0d5ae286f7741e46554302", + AMMO_57X28_L191 = "5cc80f53e4a949000e1ea4f8", + AMMO_57X28_R37F = "5cc86832d7f00c000d3a6e6c", + AMMO_57X28_R37X = "5cc86840d7f00c002412c56c", + AMMO_57X28_SB193 = "5cc80f67e4a949035e43bbba", + AMMO_57X28_SS190 = "5cc80f38e4a949001152b560", + AMMO_57X28_SS197SR = "5cc80f8fe4a949033b0224a2", + AMMO_57X28_SS198LF = "5cc80f79e4a949033c7343b2", + AMMO_68X51_FMJ = "6529302b8c26af6326029fb7", + AMMO_68X51_HYBRID = "6529243824cbe3c74a05e5c1", + AMMO_762X25TT_AKBS = "5735fdcd2459776445391d61", + AMMO_762X25TT_FMJ43 = "5735ff5c245977640e39ba7e", + AMMO_762X25TT_LRN = "573601b42459776410737435", + AMMO_762X25TT_LRNPC = "573602322459776445391df1", + AMMO_762X25TT_P = "5736026a245977644601dc61", + AMMO_762X25TT_PST = "573603562459776430731618", + AMMO_762X25TT_PT = "573603c924597764442bd9cb", + AMMO_762X35_AP = "5fd20ff893a8961fc660a954", + AMMO_762X35_BCP_FMJ = "5fbe3ffdf8b6a877a729ea82", + AMMO_762X35_CBJ = "64b8725c4b75259c590fa899", + AMMO_762X35_M62 = "619636be6db0f2477964e710", + AMMO_762X35_VMAX = "6196364158ef8c428c287d9f", + AMMO_762X35_WHISPER = "6196365d58ef8c428c287da1", + AMMO_762X39_BP = "59e0d99486f7744a32234762", + AMMO_762X39_FMJ = "64b7af5a8532cf95ee0a0dbd", + AMMO_762X39_HP = "59e4d3d286f774176a36250a", + AMMO_762X39_MAI_AP = "601aa3d2b2bcb34913271e6d", + AMMO_762X39_PP = "64b7af434b75259c590fa893", + AMMO_762X39_PS = "5656d7c34bdc2d9d198b4587", + AMMO_762X39_SP = "64b7af734b75259c590fa895", + AMMO_762X39_T45M1 = "59e4cf5286f7741778269d8a", + AMMO_762X39_US = "59e4d24686f7741776641ac7", + AMMO_762X51_BCP_FMJ = "5e023e53d4353e3302577c4c", + AMMO_762X51_M61 = "5a6086ea4f39f99cd479502f", + AMMO_762X51_M62 = "5a608bf24f39f98ffc77720e", + AMMO_762X51_M80 = "58dd3ad986f77403051cba8f", + AMMO_762X51_M993 = "5efb0c1bd79ff02a1f5e68d9", + AMMO_762X51_TCW_SP = "5e023e6e34d52a55c3304f71", + AMMO_762X51_ULTRA_NOSLER = "5e023e88277cce2b522ff2b1", + AMMO_762X54R_BS = "5e023d48186a883be655e551", + AMMO_762X54R_BT = "5e023d34e8a400319a28ed44", + AMMO_762X54R_FMJ = "64b8f7968532cf95ee0a0dbf", + AMMO_762X54R_HP_BT = "64b8f7c241772715af0f9c3d", + AMMO_762X54R_LPS = "5887431f2459777e1612938f", + AMMO_762X54R_PS = "59e77a2386f7742ee578960a", + AMMO_762X54R_SNB = "560d61e84bdc2da74d8b4571", + AMMO_762X54R_SP_BT = "64b8f7b5389d7ffd620ccba2", + AMMO_762X54R_T46M = "5e023cf8186a883be655e54f", + AMMO_86X70_AP = "5fc382a9d724d907e2077dab", + AMMO_86X70_FMJ = "5fc275cf85fd526b824a571a", + AMMO_86X70_TACX = "5fc382b6d6fa9c00c571bbc3", + AMMO_86X70_UCW = "5fc382c1016cce60e8341b20", + AMMO_9X18PM_BZHT = "573718ba2459775a75491131", + AMMO_9X18PM_P = "573719762459775a626ccbc1", + AMMO_9X18PM_PBM = "573719df2459775a626ccbc2", + AMMO_9X18PM_PPE = "57371b192459775a9f58a5e0", + AMMO_9X18PM_PPT = "57371e4124597760ff7b25f1", + AMMO_9X18PM_PRS = "57371eb62459776125652ac1", + AMMO_9X18PM_PSO = "57371f8d24597761006c6a81", + AMMO_9X18PM_PST = "5737201124597760fc4431f1", + AMMO_9X18PM_PSTM = "57371aab2459775a77142f22", + AMMO_9X18PM_PSV = "5737207f24597760ff7b25f2", + AMMO_9X18PM_PS_PPO = "57371f2b24597761224311f1", + AMMO_9X18PM_RG028 = "573720e02459776143012541", + AMMO_9X18PM_SHRAPNEL = "5943d9c186f7745a13413ac9", + AMMO_9X18PM_SP7 = "57372140245977611f70ee91", + AMMO_9X18PM_SP8 = "5737218f245977612125ba51", + AMMO_9X19_AP_63 = "5c925fa22e221601da359b7b", + AMMO_9X19_GT = "5c3df7d588a4501f290594e5", + AMMO_9X19_LUGER_CCI = "5a3c16fe86f77452b62de32a", + AMMO_9X19_M882 = "64b7bbb74b75259c590fa897", + AMMO_9X19_PBP = "5efb0da7a29a85116f6ea05f", + AMMO_9X19_PSO = "58864a4f2459770fcc257101", + AMMO_9X19_PST = "56d59d3ad2720bdb418b4577", + AMMO_9X19_QUAKEMAKER = "5efb0e16aeb21837e749c7ff", + AMMO_9X19_RIP = "5c0d56a986f774449d5de529", + AMMO_9X21_7N42 = "6576f4708ca9c4381d16cd9d", + AMMO_9X21_7U4 = "6576f93989f0062e741ba952", + AMMO_9X21_BT = "5a26ac0ec4a28200741e1e18", + AMMO_9X21_P = "5a26abfac4a28232980eabff", + AMMO_9X21_PE = "5a26ac06c4a282000c5a90a8", + AMMO_9X21_PS = "5a269f97c4a282000b151807", + AMMO_9X33R_FMJ = "62330b3ed4dc74626d570b95", + AMMO_9X33R_HP = "62330bfadc5883093563729b", + AMMO_9X33R_JHP = "62330c18744e5e31df12f516", + AMMO_9X33R_SP = "62330c40bdd19b369e1e53d1", + AMMO_9X39_BP = "5c0d688c86f77413ae3407b2", + AMMO_9X39_FMJ = "6576f96220d53a5b8f3e395e", + AMMO_9X39_PAB9 = "61962d879bb3d20b0946d385", + AMMO_9X39_SP5 = "57a0dfb82459774d3078b56c", + AMMO_9X39_SP6 = "57a0e5022459774d1673f889", + AMMO_9X39_SPP = "5c0d668f86f7747ccb7f13b2", + ARMBAND_ALPHA = "619bc61e86e01e16f839a999", + ARMBAND_ARENA = "664a5480bfcc521bad3192ca", + ARMBAND_BEAR = "619bdd8886e01e16f839a99c", + ARMBAND_BLUE = "5b3f3af486f774679e752c1f", + ARMBAND_DEADSKUL = "619bddc6c9546643a67df6ee", + ARMBAND_EVASION = "60b0f988c4449e4cb624c1da", + ARMBAND_GREEN = "5b3f3b0186f774021a2afef7", + ARMBAND_KIBA_ARMS = "619bde3dc9546643a67df6f2", + ARMBAND_LABS = "619bde7fc9546643a67df6f4", + ARMBAND_OF_THE_UNHEARD = "660312cc4d6cdfa6f500c703", + ARMBAND_RED = "5b3f3ade86f7746b6b790d8e", + ARMBAND_RFARMY = "619bdeb986e01e16f839a99e", + ARMBAND_RIVALS_2020 = "5f9949d869e2777a0e779ba5", + ARMBAND_TERRAGROUP = "619bdef8c9546643a67df6f6", + ARMBAND_TRAIN_HARD = "619bddffc9546643a67df6f0", + ARMBAND_UNTAR = "619bdf9cc9546643a67df6f8", + ARMBAND_USEC = "619bdfd4c9546643a67df6fa", + ARMBAND_WHITE = "5b3f16c486f7747c327f55f7", + ARMBAND_YELLOW = "5b3f3b0e86f7746752107cda", + ARMOREDEQUIPMENT_ALTYN_HELMET_FACE_SHIELD = "5aa7e373e5b5b000137b76f0", + ARMOREDEQUIPMENT_CRYE_PRECISION_AIRFRAME_CHOPS = "5c178a942e22164bef5ceca3", + ARMOREDEQUIPMENT_CRYE_PRECISION_AIRFRAME_EARS = "5c1793902e221602b21d3de2", + ARMOREDEQUIPMENT_DIAMOND_AGE_BASTION_HELMET_ARMOR_PLATE = "5ea18c84ecf1982c7712d9a2", + ARMOREDEQUIPMENT_DIAMOND_AGE_NEOSTEEL_HELMET_BALLISTIC_MANDIBLE = "6570a88c8f221f3b210353b7", + ARMOREDEQUIPMENT_GALVION_CAIMAN_FIXED_ARM_VISOR = "5f60bf4558eff926626a60f2", + ARMOREDEQUIPMENT_GALVION_CAIMAN_HYBRID_BALLISTIC_APPLIQUE = "5f60b85bbdb8e27dee3dc985", + ARMOREDEQUIPMENT_GALVION_CAIMAN_HYBRID_BALLISTIC_MANDIBLE_GUARD = "5f60c076f2bcbb675b00dac2", + ARMOREDEQUIPMENT_KIVERM_FACE_SHIELD = "5b46238386f7741a693bcf9c", + ARMOREDEQUIPMENT_KOLPAK1S_FACE_SHIELD = "5ac4c50d5acfc40019262e87", + ARMOREDEQUIPMENT_LSHZ2DTM_AVENTAIL = "5d6d3be5a4b9361bc73bc763", + ARMOREDEQUIPMENT_LSHZ2DTM_COVER_BLACK = "5d6d3943a4b9360dbc46d0cc", + ARMOREDEQUIPMENT_LSHZ2DTM_FACE_SHIELD = "5d6d3829a4b9361bc8618943", + ARMOREDEQUIPMENT_MASKA1SCH_FACE_SHIELD_KILLA_EDITION = "5c0e842486f77443a74d2976", + ARMOREDEQUIPMENT_MASKA1SCH_FACE_SHIELD_OLIVE_DRAB = "5c0919b50db834001b7ce3b9", + ARMOREDEQUIPMENT_NPP_KLASS_TOR2_HELMET_FACE_SHIELD = "65719f9ef392ad76c50a2ec8", + ARMOREDEQUIPMENT_OPSCORE_FAST_GUNSIGHT_MANDIBLE = "5a16ba61fcdbcb098008728a", + ARMOREDEQUIPMENT_OPSCORE_FAST_MULTIHIT_BALLISTIC_FACE_SHIELD = "5a16b7e1fcdbcb00165aa6c9", + ARMOREDEQUIPMENT_OPSCORE_FAST_SIDE_ARMOR = "5a16badafcdbcb001865f72d", + ARMOREDEQUIPMENT_OPSCORE_FAST_VISOR = "5a16b672fcdbcb001912fa83", + ARMOREDEQUIPMENT_OPSCORE_SLAAP_ARMOR_HELMET_PLATE_TAN = "5c0e66e2d174af02a96252f4", + ARMOREDEQUIPMENT_RYST_FACE_SHIELD = "5f60c85b58eff926626a60f7", + ARMOREDEQUIPMENT_TACKEK_HEAVY_TROOPER_MASK_FOR_OPSCORETYPE_HELMETS = "5ea058e01dbce517f324b3e2", + ARMOREDEQUIPMENT_TEAM_WENDY_EXFIL_BALLISTIC_FACE_SHIELD_BLACK = "5e00cdd986f7747473332240", + ARMOREDEQUIPMENT_TEAM_WENDY_EXFIL_BALLISTIC_FACE_SHIELD_COYOTE_BROWN = "5e01f37686f774773c6f6c15", + ARMOREDEQUIPMENT_TEAM_WENDY_EXFIL_EAR_COVERS_BLACK = "5e00cfa786f77469dc6e5685", + ARMOREDEQUIPMENT_TEAM_WENDY_EXFIL_EAR_COVERS_COYOTE_BROWN = "5e01f31d86f77465cf261343", + ARMOREDEQUIPMENT_VULKAN5_HELMET_FACE_SHIELD = "5ca2113f86f7740b2547e1d2", + ARMOREDEQUIPMENT_ZSH12M_FACE_SHIELD = "5aa7e3abe5b5b000171d064d", + ARMORPLATE_6B12_BALLISTIC_PLATES_FRONT = "654a4dea7c17dec2f50cc86a", + ARMORPLATE_6B13_CUSTOM_BALLISTIC_PLATES_BACK = "656efd66034e8e01c407f35c", + ARMORPLATE_6B232_BALLISTIC_PLATE_BACK = "657b22485f444d6dff0c6c2f", + ARMORPLATE_6B33_BALLISTIC_PLATE_FRONT = "656f603f94b480b8a500c0d6", + ARMORPLATE_AR500_LEGACY_PLATE_BALLISTIC_PLATE = "656f9d5900d62bcd2e02407c", + ARMORPLATE_ARAMID_INSERT = "64b111fe1be308f1800688c1", + ARMORPLATE_CULT_LOCUST_BALLISTIC_PLATE = "656fa8d700d62bcd2e024084", + ARMORPLATE_CULT_TERMITE_BALLISTIC_PLATE = "656fa99800d62bcd2e024088", + ARMORPLATE_ESAPI_LEVEL_IV_BALLISTIC_PLATE = "64afdcb83efdfea28601d041", + ARMORPLATE_ESBI_LEVEL_IV_BALLISTIC_PLATE_SIDE = "64afdb577bb3bfe8fe03fd1d", + ARMORPLATE_GAC_3S15M_BALLISTIC_PLATE = "656fae5f7c2d57afe200c0d7", + ARMORPLATE_GAC_4SSS2_BALLISTIC_PLATE = "656faf0ca0dce000a2020f77", + ARMORPLATE_GLOBAL_ARMORS_STEEL_BALLISTIC_PLATE = "656fa0fb498d1b7e3e071d9c", + ARMORPLATE_GRANIT_4RS_BALLISTIC_PLATES_BACK = "654a4a964b446df1ad03f192", + ARMORPLATE_GRANIT_4RS_BALLISTIC_PLATE_FRONT = "656f63c027aed95beb08f62c", + ARMORPLATE_GRANIT_4_BALLISTIC_PLATES_BACK = "656efaf54772930db4031ff5", + ARMORPLATE_GRANIT_4_BALLISTIC_PLATE_FRONT = "656f611f94b480b8a500c0db", + ARMORPLATE_GRANIT_BALLISTIC_PLATE_SIDE = "64afd81707e2cf40e903a316", + ARMORPLATE_GRANIT_BR4_BALLISTIC_PLATE = "65573fa5655447403702a816", + ARMORPLATE_GRANIT_BR5_BALLISTIC_PLATE = "64afc71497cf3a403c01ff38", + ARMORPLATE_HELMET_ALL_EXEPTNECK = "64b11c08506a73f6a10f9364", + ARMORPLATE_KIBA_ARMS_STEEL_BALLISTIC_PLATE = "656fa76500d62bcd2e024080", + ARMORPLATE_KIBA_ARMS_TITAN_BALLISTIC_PLATE = "656fa25e94b480b8a500c0e0", + ARMORPLATE_KITECO_SCIV_SA_BALLISTIC_PLATE = "656fafe3498d1b7e3e071da4", + ARMORPLATE_KORUNDVMK_BALLISTIC_PLATES_FRONT = "656f66b5c6baea13cd07e108", + ARMORPLATE_KORUNDVMK_BALLISTIC_PLATE_BACK = "657b28d25f444d6dff0c6c77", + ARMORPLATE_KORUNDVM_BALLISTIC_PLATES_FRONT = "656f664200d62bcd2e024077", + ARMORPLATE_KORUNDVM_BALLISTIC_PLATE_BACK = "657b2797c3dbcb01d60c35ea", + ARMORPLATE_KORUNDVM_BALLISTIC_PLATE_SIDE = "654a4f8bc721968a4404ef18", + ARMORPLATE_MONOCLETE_LEVEL_III_PE_BALLISTIC_PLATE = "656fad8c498d1b7e3e071da0", + ARMORPLATE_NESCO_4400SAMC_BALLISTIC_PLATE = "656fa61e94b480b8a500c0e8", + ARMORPLATE_NEWSPHERETECH_LEVEL_III_BALLISTIC_PLATE = "656fb21fa0dce000a2020f7c", + ARMORPLATE_PRTCTR_LIGHTWEIGHT_BALLISTIC_PLATE = "656fac30c6baea13cd07e10c", + ARMORPLATE_SAPI_LEVEL_III_BALLISTIC_PLATE = "655746010177119f4a097ff7", + ARMORPLATE_SPRTN_ELAPHROS_BALLISTIC_PLATE = "656fb0bd7c2d57afe200c0dc", + ARMORPLATE_SPRTN_OMEGA_BALLISTIC_PLATE = "656f9fa0498d1b7e3e071d98", + ARMORPLATE_SSAPI_LEVEL_III_BALLISTIC_PLATE_SIDE = "6557458f83942d705f0c4962", + ARMORPLATE_TALLCOM_GUARDIAN_BALLISTIC_PLATE = "656fa53d94b480b8a500c0e4", + ARMORPLATE_ZHUK3_BALLISTIC_PLATE_FRONT = "656f57dc27aed95beb08f628", + ARMOR_511_TACTICAL_HEXGRID_PLATE_CARRIER = "5fd4c474dd870108a754b241", + ARMOR_6B13_ASSAULT_ARMOR_DIGITAL_FLORA = "5c0e53c886f7747fa54205c7", + ARMOR_6B13_ASSAULT_ARMOR_FLORA = "5c0e51be86f774598e797894", + ARMOR_6B13_M_ASSAULT_ARMOR_KILLA_EDITION = "5c0e541586f7747fa54205c9", + ARMOR_6B231_BODY_ARMOR_DIGITAL_FLORA = "5c0e5bab86f77461f55ed1f3", + ARMOR_6B232_BODY_ARMOR_MOUNTAIN_FLORA = "5c0e57ba86f7747fa141986d", + ARMOR_6B2_BODY_ARMOR_FLORA = "5df8a2ca86f7740bfe6df777", + ARMOR_6B43_ZABRALOSH_BODY_ARMOR_DIGITAL_FLORA = "545cdb794bdc2d3a198b456a", + ARMOR_BNTI_GZHELK_BODY = "5ab8e79e86f7742d8b372e78", + ARMOR_BNTI_KIRASAN_BODY = "5b44d22286f774172b0c9de8", + ARMOR_BNTI_MODULE3M_BODY = "59e7635f86f7742cbf2c1095", + ARMOR_BNTI_ZHUK_BODY_ARMOR_DIGITAL_FLORA = "5c0e625a86f7742d77340f62", + ARMOR_BNTI_ZHUK_BODY_ARMOR_PRESS = "5c0e5edb86f77461f55ed1f7", + ARMOR_DRD_BODY = "62a09d79de7ac81993580530", + ARMOR_FORT_DEFENDER2_BODY = "5e9dacf986f774054d6b89f4", + ARMOR_FORT_REDUTM_BODY = "5ca2151486f774244a3b8d30", + ARMOR_FORT_REDUTT5_BODY_ARMOR_SMOG = "5ca21c6986f77479963115a7", + ARMOR_HEXATAC_HPC_PLATE_CARRIER_MULTICAM_BLACK = "63737f448b28897f2802b874", + ARMOR_HIGHCOM_TROOPER_TFO_BODY_ARMOR_MULTICAM = "5c0e655586f774045612eeb2", + ARMOR_INTERCEPTOR_OTV_BODY_ARMOR_UCP = "64abd93857958b4249003418", + ARMOR_IOTV_GEN4_BODY_ARMOR_ASSAULT_KIT_MULTICAM = "5b44cf1486f77431723e3d05", + ARMOR_IOTV_GEN4_BODY_ARMOR_FULL_PROTECTION_KIT_MULTICAM = "5b44cd8b86f774503d30cba2", + ARMOR_IOTV_GEN4_BODY_ARMOR_HIGH_MOBILITY_KIT_MULTICAM = "5b44d0de86f774503d30cba8", + ARMOR_LBT6094A_SLICK_PLATE_CARRIER_BLACK = "5e4abb5086f77406975c9342", + ARMOR_LBT6094A_SLICK_PLATE_CARRIER_COYOTE_TAN = "6038b4b292ec1c3103795a0b", + ARMOR_LBT6094A_SLICK_PLATE_CARRIER_OLIVE_DRAB = "6038b4ca92ec1c3103795a0d", + ARMOR_MFUNTAR_BODY = "5ab8e4ed86f7742d8e50c7fa", + ARMOR_NFM_THOR_CONCEALABLE_REINFORCED_VEST_BODY = "609e8540d5c319764c2bc2e9", + ARMOR_NFM_THOR_INTEGRATED_CARRIER_BODY = "60a283193cb70855c43a381d", + ARMOR_NPP_KLASS_KORAKULON_BODY_ARMOR_BLACK = "64be79c487d1510151095552", + ARMOR_NPP_KLASS_KORAKULON_BODY_ARMOR_DIGITAL_FLORA = "64be79e2bf8412471d0d9bcc", + ARMOR_NPP_KLASS_KORUNDVM_BODY_ARMOR_BLACK = "5f5f41476bdad616ad46d631", + ARMOR_PACA_SOFT = "5648a7494bdc2d9d488b4583", + ARMOR_PACA_SOFT_ARMOR_RIVALS_EDITION = "607f20859ee58b18e41ecd90", + ASSAULTCARBINE_AS_VAL_9X39_SPECIAL_ASSAULT_RIFLE = "57c44b372459772d2b39b8ce", + ASSAULTCARBINE_KBP_9A91_9X39_COMPACT_ASSAULT_RIFLE = "644674a13d52156624001fbc", + ASSAULTCARBINE_KBP_VSK94_9X39_RIFLE = "645e0c6b3b381ede770e1cc9", + ASSAULTCARBINE_MOLOT_ARMS_SIMONOV_OPSKS_762X39_CARBINE = "587e02ff24597743df3deaeb", + ASSAULTCARBINE_MOLOT_ARMS_VPO101_VEPRHUNTER_762X51_CARBINE = "5c501a4d2e221602b412b540", + ASSAULTCARBINE_TOKAREV_AVT40_762X54R_AUTOMATIC_RIFLE = "6410733d5dd49d77bd07847e", + ASSAULTCARBINE_TOKAREV_SVT40_762X54R_RIFLE = "643ea5b23db6f9f57107d9fd", + ASSAULTCARBINE_TOZ_SIMONOV_SKS_762X39_CARBINE = "574d967124597745970e7c94", + ASSAULTRIFLE_ADAR_215_556X45_CARBINE = "5c07c60e0db834002330051f", + ASSAULTRIFLE_ASH12_127X55_ASSAULT_RIFLE = "5cadfbf7ae92152ac412eeef", + ASSAULTRIFLE_CMMG_MK47_MUTANT_762X39_ASSAULT_RIFLE = "606587252535c57a13424cfd", + ASSAULTRIFLE_COLT_M4A1_556X45_ASSAULT_RIFLE = "5447a9cd4bdc2dbd208b4567", + ASSAULTRIFLE_DESERT_TECH_MDR_556X45_ASSAULT_RIFLE = "5c488a752e221602b412af63", + ASSAULTRIFLE_DESERT_TECH_MDR_762X51_ASSAULT_RIFLE = "5dcbd56fdbd3d91b3e5468d5", + ASSAULTRIFLE_DS_ARMS_SA58_762X51_ASSAULT_RIFLE = "5b0bbe4e5acfc40dc528a72d", + ASSAULTRIFLE_FN_SCARH_762X51_ASSAULT_RIFLE = "6183afd850224f204c1da514", + ASSAULTRIFLE_FN_SCARH_762X51_ASSAULT_RIFLE_FDE = "6165ac306ef05c2ce828ef74", + ASSAULTRIFLE_FN_SCARL_556X45_ASSAULT_RIFLE = "6184055050224f204c1da540", + ASSAULTRIFLE_FN_SCARL_556X45_ASSAULT_RIFLE_FDE = "618428466ef05c2ce828f218", + ASSAULTRIFLE_HK_416A5_556X45_ASSAULT_RIFLE = "5bb2475ed4351e00853264e3", + ASSAULTRIFLE_HK_G36_556X45_ASSAULT_RIFLE = "623063e994fc3f7b302a9696", + ASSAULTRIFLE_KALASHNIKOV_AK101_556X45_ASSAULT_RIFLE = "5ac66cb05acfc40198510a10", + ASSAULTRIFLE_KALASHNIKOV_AK102_556X45_ASSAULT_RIFLE = "5ac66d015acfc400180ae6e4", + ASSAULTRIFLE_KALASHNIKOV_AK103_762X39_ASSAULT_RIFLE = "5ac66d2e5acfc43b321d4b53", + ASSAULTRIFLE_KALASHNIKOV_AK104_762X39_ASSAULT_RIFLE = "5ac66d725acfc43b321d4b60", + ASSAULTRIFLE_KALASHNIKOV_AK105_545X39_ASSAULT_RIFLE = "5ac66d9b5acfc4001633997a", + ASSAULTRIFLE_KALASHNIKOV_AK12_545X39_ASSAULT_RIFLE = "6499849fc93611967b034949", + ASSAULTRIFLE_KALASHNIKOV_AK74M_545X39_ASSAULT_RIFLE = "5ac4cd105acfc40016339859", + ASSAULTRIFLE_KALASHNIKOV_AK74N_545X39_ASSAULT_RIFLE = "5644bd2b4bdc2d3b4c8b4572", + ASSAULTRIFLE_KALASHNIKOV_AK74_545X39_ASSAULT_RIFLE = "5bf3e03b0db834001d2c4a9c", + ASSAULTRIFLE_KALASHNIKOV_AKMN_762X39_ASSAULT_RIFLE = "5a0ec13bfcdbcb00165aa685", + ASSAULTRIFLE_KALASHNIKOV_AKMSN_762X39_ASSAULT_RIFLE = "5abcbc27d8ce8700182eceeb", + ASSAULTRIFLE_KALASHNIKOV_AKMS_762X39_ASSAULT_RIFLE = "59ff346386f77477562ff5e2", + ASSAULTRIFLE_KALASHNIKOV_AKM_762X39_ASSAULT_RIFLE = "59d6088586f774275f37482f", + ASSAULTRIFLE_KALASHNIKOV_AKS74N_545X39_ASSAULT_RIFLE = "5ab8e9fcd8ce870019439434", + ASSAULTRIFLE_KALASHNIKOV_AKS74UB_545X39_ASSAULT_RIFLE = "5839a40f24597726f856b511", + ASSAULTRIFLE_KALASHNIKOV_AKS74UN_545X39_ASSAULT_RIFLE = "583990e32459771419544dd2", + ASSAULTRIFLE_KALASHNIKOV_AKS74U_545X39_ASSAULT_RIFLE = "57dc2fa62459775949412633", + ASSAULTRIFLE_KALASHNIKOV_AKS74_545X39_ASSAULT_RIFLE = "5bf3e0490db83400196199af", + ASSAULTRIFLE_LONE_STAR_TX15_DML_556X45_CARBINE = "5d43021ca4b9362eab4b5e25", + ASSAULTRIFLE_MASTER_HAND = "5ae083b25acfc4001a5fc702", + ASSAULTRIFLE_MOLOT_ARMS_VPO136_VEPRKM_762X39_CARBINE = "59e6152586f77473dc057aa1", + ASSAULTRIFLE_MOLOT_ARMS_VPO209_366_TKM_CARBINE = "59e6687d86f77411d949b251", + ASSAULTRIFLE_RIFLE_DYNAMICS_RD704_762X39_ASSAULT_RIFLE = "628a60ae6b1d481ff772e9c8", + ASSAULTRIFLE_SAG_AK545_545X39_CARBINE = "628b5638ad252a16da6dd245", + ASSAULTRIFLE_SAG_AK545_SHORT_545X39_CARBINE = "628b9c37a733087d0d7fe84b", + ASSAULTRIFLE_SIG_MCX_300_BLACKOUT_ASSAULT_RIFLE = "5fbcc1d9016cce60e8341ab3", + ASSAULTRIFLE_SIG_MCX_SPEAR_68X51_ASSAULT_RIFLE = "65290f395ae2ae97b80fdf2d", + ASSAULTRIFLE_STEYR_AUG_A1_556X45_ASSAULT_RIFLE = "62e7c4fba689e8c9c50dfc38", + ASSAULTRIFLE_STEYR_AUG_A3_556X45_ASSAULT_RIFLE = "63171672192e68c5460cebc5", + ASSAULTSCOPE_ELCAN_SPECTERDR_1X4X_SCOPE = "57ac965c24597706be5f975c", + ASSAULTSCOPE_ELCAN_SPECTERDR_1X4X_SCOPE_FDE = "57aca93d2459771f2c7e26db", + ASSAULTSCOPE_ELCAN_SPECTER_OS4X_ASSAULT_SCOPE = "544a3f024bdc2d1d388b4568", + ASSAULTSCOPE_HK_G36_HENSOLDT_HKV_3X_CARRY_HANDLE = "622b4d7df9cfc87d675d2ded", + ASSAULTSCOPE_HK_G36_HENSOLDT_HKV_ZF_15X_CARRY_HANDLE = "622b4f54dc8dcc0ba8742f85", + ASSAULTSCOPE_KIBA_ARMS_SHORT_PRISM_25X_SCOPE = "5c1cdd512e22161b267d91ae", + ASSAULTSCOPE_LEUPOLD_MARK_4_HAMR_4X24_DELTAPOINT_HYBRID_ASSAULT_SCOPE = "544a3a774bdc2d3a388b4567", + ASSAULTSCOPE_MONSTRUM_TACTICAL_COMPACT_PRISM_SCOPE_2X32 = "5d2dc3e548f035404a1a4798", + ASSAULTSCOPE_SIG_SAUER_BRAVO4_4X30_SCOPE = "57adff4f24597737f373b6e6", + ASSAULTSCOPE_STEYR_AUG_A1_STG77_15X_OPTIC_SIGHT = "62ea7c793043d74a0306e19f", + ASSAULTSCOPE_STEYR_AUG_A3_M1_15X_OPTIC_SIGHT = "62ebd290c427473eff0baafb", + ASSAULTSCOPE_SWAMPFOX_TRIHAWK_PRISM_SCOPE_3X30 = "626bb8532c923541184624b4", + ASSAULTSCOPE_TRIJICON_ACOG_TA01NSN_4X32_SCOPE_BLACK = "5c05293e0db83400232fff80", + ASSAULTSCOPE_TRIJICON_ACOG_TA01NSN_4X32_SCOPE_TAN = "5c052a900db834001a66acbd", + ASSAULTSCOPE_TRIJICON_ACOG_TA11D_35X35_SCOPE = "59db7e1086f77448be30ddf3", + ASSAULTSCOPE_VALDAY_PS320_16X_SCOPE = "5c0517910db83400232ffee5", + AUXILIARYMOD_ARMASIGHT_VULCAN_MG_SCOPE_EYECUP = "5b3cbc235acfc4001863ac44", + AUXILIARYMOD_ARMASIGHT_ZEUSPRO_SCOPE_EYECUP = "63fc4533b10b17385349b565", + AUXILIARYMOD_AXION_KOBRA_SIGHT_SHADE = "591c4e1186f77410354b316e", + AUXILIARYMOD_FAB_DEFENSE_PROTECTION_CAP_FOR_AGR870 = "5bfe86bd0db83400232fe959", + AUXILIARYMOD_GLOCK_ZEV_TECH_SIGHT_MOUNT_CAP = "5a71e1868dc32e00094b97f3", + AUXILIARYMOD_HK_G36_HAND_STOP = "622f16a1a5958f63c67f1737", + AUXILIARYMOD_HK_USP_HAMMER = "6193d3be7c6c7b169525f0da", + AUXILIARYMOD_HK_USP_SLIDE_LOCK = "6193d5d4f8ee7e52e4210a1b", + AUXILIARYMOD_HK_USP_TRIGGER = "6193d3cded0429009f543e6a", + AUXILIARYMOD_KAC_URX_331_LONG_PANEL = "5d123b70d7ad1a0ee35e0754", + AUXILIARYMOD_KAC_URX_331_LONG_PANEL_FDE = "5d124c0ed7ad1a10d168dd9b", + AUXILIARYMOD_KAC_URX_331_SHORT_PANEL = "5d123a3cd7ad1a004e476058", + AUXILIARYMOD_KAC_URX_331_SHORT_PANEL_FDE = "5d124c01d7ad1a115c7d59fb", + AUXILIARYMOD_KAC_URX_331_STOPPER_PANEL = "5d123b7dd7ad1a004f01b262", + AUXILIARYMOD_KAC_URX_331_STOPPER_PANEL_FDE = "5d124c1ad7ad1a12227c53a7", + AUXILIARYMOD_KMZ_1P59_SCOPE_EYECUP = "5d0b5cd3d7ad1a3fe32ad263", + AUXILIARYMOD_KPSR2_SIGHT_SHADE = "62ff9faffe938a24c90c10df", + AUXILIARYMOD_M1911A1_CASPIAN_ARMS_TRIK_TRIGGER = "5ef32e4d1c1fd62aea6a150d", + AUXILIARYMOD_M1911A1_HAMMER = "5e81c550763d9f754677befd", + AUXILIARYMOD_M1911A1_SLIDE_STOP = "5e81c539cb2b95385c177553", + AUXILIARYMOD_M1911A1_STI_HEX_HAMMER = "5ef35f46382a846010715a96", + AUXILIARYMOD_M1911A1_TRIGGER = "5e81c6a2ac2bb513793cdc7f", + AUXILIARYMOD_M1911A1_WILSON_EXTENDED_SLIDE_STOP = "5ef3553c43cb350a955a7ccb", + AUXILIARYMOD_M1911A1_WILSON_RETRO_COMMANDER_HAMMER = "5ef35d2ac64c5d0dfc0571b0", + AUXILIARYMOD_M1911A1_WILSON_ULTRALIGHT_SKELETONIZED_HAMMER = "5ef35bc243cb350a955a7ccd", + AUXILIARYMOD_M45A1_HAMMER = "5f3e76d86cda304dcc634054", + AUXILIARYMOD_M45A1_SLIDE_LOCK = "5f3e777688ca2d00ad199d25", + AUXILIARYMOD_M45A1_TRIGGER = "5f3e772a670e2a7b01739a52", + AUXILIARYMOD_MP155_ULTIMA_PISTOL_GRIP_RUBBER_PAD = "60785c0d232e5a31c233d51c", + AUXILIARYMOD_MP155_ULTIMA_UNDERBARREL_MOUNT = "606f26752535c57a13424d22", + AUXILIARYMOD_NPZ_1P78_SCOPE_EYECUP = "618a760e526131765025aae3", + AUXILIARYMOD_NPZ_USP1_SCOPE_EYECUP = "5cf639aad7f00c065703d455", + AUXILIARYMOD_NSPUM_SCOPE_EYECUP = "5ba36f85d4351e0085325c81", + AUXILIARYMOD_PSO_SCOPE_EYECUP = "57f3a5ae2459772b0e0bf19e", + AUXILIARYMOD_STM9_MAGWELL = "602f85fd9b513876d4338d9c", + AUXILIARYMOD_STM9_MAGWELL_GREY = "60338ff388382f4fab3fd2c8", + AUXILIARYMOD_SV98_ANTIHEAT_RIBBON = "56083eab4bdc2d26448b456a", + AUXILIARYMOD_SV98_SOUND_SUPPRESSOR_HEAT_SHIELD = "5c4eecde2e221602b3140418", + AUXILIARYMOD_TRIJICON_REAPIR_SCOPE_EYECUP = "5a1eacb3fcdbcb09800872be", + AUXILIARYMOD_TROPHY = "5ae089fb5acfc408fb13989b", + BACKPACK_3V_GEAR_PARATUS_3DAY_OPERATORS_TACTICAL_BACKPACK_FOLIAGE_GREY = "5c0e805e86f774683f3dd637", + BACKPACK_6SH118_RAID_BACKPACK_DIGITAL_FLORA = "5df8a4d786f77412672a1e3b", + BACKPACK_ANA_TACTICAL_BETA_2_BATTLE_BACKPACK_OLIVE_DRAB = "5b44c6ae86f7742d1627baea", + BACKPACK_CAMELBAK_TRIZIP_ASSAULT_BACKPACK_FOLIAGE = "545cdae64bdc2d39198b4568", + BACKPACK_DIRECT_ACTION_DRAGON_EGG_MARK_II_BACKPACK_BLACK = "656f198fb27298d6fd005466", + BACKPACK_DUFFLE_BAG = "56e33634d2720bd8058b456b", + BACKPACK_EBERLESTOCK_F4_TERMINATOR_LOAD_BEARING_BACKPACK_TIGER_STRIPE = "5f5e46b96bdad616ad46d613", + BACKPACK_EBERLESTOCK_F5_SWITCHBLADE_BACKPACK_DRY_EARTH = "5f5e467b0bc58666c37e7821", + BACKPACK_EBERLESTOCK_G2_GUNSLINGER_II_BACKPACK_DRY_EARTH = "6034d2d697633951dc245ea6", + BACKPACK_FLYYE_MBSS_BACKPACK_UCP = "544a5cde4bdc2d39388b456b", + BACKPACK_GRUPPA_99_T20_BACKPACK_MULTICAM = "619cf0335771dd3c390269ae", + BACKPACK_GRUPPA_99_T20_BACKPACK_UMBER_BROWN = "618bb76513f5097c8d5aa2d5", + BACKPACK_GRUPPA_99_T30_BACKPACK_BLACK = "628e1ffc83ec92260c0f437f", + BACKPACK_GRUPPA_99_T30_BACKPACK_MULTICAM = "62a1b7fbc30cfa1d366af586", + BACKPACK_HAZARD_4_DRAWBRIDGE_BACKPACK_COYOTE_TAN = "60a272cc93ef783291411d8e", + BACKPACK_HAZARD_4_PILLBOX_BACKPACK_BLACK = "60a2828e8689911a226117f9", + BACKPACK_HAZARD_4_TAKEDOWN_SLING_BACKPACK_BLACK = "6034d103ca006d2dca39b3f0", + BACKPACK_HAZARD_4_TAKEDOWN_SLING_BACKPACK_MULTICAM = "6038d614d10cbf667352dd44", + BACKPACK_LBT1476A_3DAY_PACK_WOODLAND = "618cfae774bb2d036a049e7c", + BACKPACK_LBT2670_SLIM_FIELD_MED_PACK_BLACK = "5e4abc6786f77406812bd572", + BACKPACK_LBT8005A_DAY_PACK_BACKPACK_MULTICAM_BLACK = "5e9dcf5986f7746c417435b3", + BACKPACK_LOLKEK_3F_TRANSFER_TOURIST = "5f5e45cc5021ce62144be7aa", + BACKPACK_MYSTERY_RANCH_BLACKJACK_50_BACKPACK_MULTICAM = "5c0e774286f77468413cc5b2", + BACKPACK_MYSTERY_RANCH_NICE_COMM_3_BVS_FRAME_SYSTEM_COYOTE = "628bc7fb408e2b2e9c0801b1", + BACKPACK_MYSTERY_RANCH_SATL_BRIDGER_ASSAULT_PACK_FOLIAGE = "656e0436d44a1bb4220303a0", + BACKPACK_OAKLEY_MECHANISM_HEAVY_DUTY_BACKPACK_BLACK = "5d5d940f86f7742797262046", + BACKPACK_PILGRIM_TOURIST = "59e763f286f7742ee57895da", + BACKPACK_SANITARS_BAG = "5e997f0b86f7741ac73993e2", + BACKPACK_SANTAS_BAG = "61b9e1aaef9a1b5d6a79899a", + BACKPACK_SCAV = "56e335e4d2720b6c058b456d", + BACKPACK_SSO_ATTACK_2_RAID_BACKPACK_KHAKI = "5ab8ebf186f7742d8b372e80", + BACKPACK_TACTICAL_SLING_BAG_KHAKI = "5ab8f04f86f774585f4237d8", + BACKPACK_TASMANIAN_TIGER_TROOPER_35_BACKPACK_KHAKI = "639346cc1c8f182ad90c8972", + BACKPACK_TEHINKOM_RKPT25_PATROL_BACKPACK_DIGITAL_FLORA = "656ddcf0f02d7bcea90bf395", + BACKPACK_TRANSFORMER_BAG = "56e33680d2720be2748b4576", + BACKPACK_VKBO_ARMY_BAG = "5ab8ee7786f7742d8f33f0b9", + BACKPACK_WARTECH_BERKUT_BB102_BACKPACK_ATACS_FG = "5ca20d5986f774331e7c9602", + BARREL_9A91_9X39 = "645122f6d4928d46d30be3ff", + BARREL_AI_AXMC_338_LM_28_INCH = "628121434fa03b6b6c35dc6a", + BARREL_AR10_762X51_18_INCH = "5a34f7f1c4a2826c6e06d75d", + BARREL_AR10_762X51_22_INCH = "5a34fae7c4a2826c6e06d760", + BARREL_AR15_556X45_18_INCH = "5d440b93a4b9364276578d4b", + BARREL_AR15_556X45_20_INCH = "5d440b9fa4b93601354d480c", + BARREL_AR15_556X45_260MM = "55d35ee94bdc2d61338b4568", + BARREL_AR15_556X45_370MM = "55d3632e4bdc2d972f8b4569", + BARREL_AR15_556X45_MOLOT_ARMS_406MM = "5c0e2f94d174af029f650d56", + BARREL_AR15_HANSON_CARBINE_556X45_137_INCH = "63d3ce0446bd475bcb50f55f", + BARREL_AR15_HANSON_CARBINE_556X45_16_INCH = "63d3d44a2a49307baf09386d", + BARREL_BENELLI_M3_SUPER_90_12GA_500MM = "6259c2c1d714855d182bad85", + BARREL_DVL10_762X51_500MM = "5888945a2459774bf43ba385", + BARREL_DVL10_M2_762X51_660MM = "5888956924597752983e182d", + BARREL_FN_FIVESEVEN_57X28 = "5d3eb5b6a4b9361eab311902", + BARREL_FN_FIVESEVEN_57X28_THREADED = "5d3eb59ea4b9361c284bb4b2", + BARREL_FN_P90_57X28_105_INCH = "5cc701aae4a949000e1ea45c", + BARREL_FN_P90_57X28_16_INCH = "5cc701d7e4a94900100ac4e7", + BARREL_FN_SCARH_762X51_13_INCH = "618168b350224f204c1da4d8", + BARREL_FN_SCARH_762X51_16_INCH = "6183b0711cb55961fa0fdcad", + BARREL_FN_SCARH_762X51_20_INCH = "6183b084a112697a4b3a6e6c", + BARREL_FN_SCARL_556X45_10_INCH = "6183fc15d3a39d50044c13e9", + BARREL_FN_SCARL_556X45_14_INCH = "6183fd911cb55961fa0fdce9", + BARREL_FN_SCARL_556X45_18_INCH = "6183fd9e8004cc50514c358f", + BARREL_GLOCK_17_9X19 = "5a6b5f868dc32e000a311389", + BARREL_GLOCK_17_9X19_BARREL_WITH_A_COMPENSATOR = "5a6b60158dc32e000a31138b", + BARREL_GLOCK_18C_9X19_BARREL_WITH_A_COMPENSATOR = "5b1fa9ea5acfc40018633c0a", + BARREL_GLOCK_19X_9X19 = "630764fea987397c0816d219", + BARREL_GLOCK_9X19_DOUBLE_DIAMOND_THREADED = "5a6b5e468dc32e001207faf5", + BARREL_GLOCK_9X19_LONE_WOLF_ALPHAWOLF_THREADED = "5a6b5b8a8dc32e001207faf3", + BARREL_GLOCK_9X19_SAI_THREADED = "5a6b5ed88dc32e000c52ec86", + BARREL_HK417_762X51_165_INCH = "61702be9faa1272e431522c3", + BARREL_HK_416A5_556X45_106_INCH = "5c6d85e02e22165df16b81f4", + BARREL_HK_416A5_556X45_11_INCH = "5bb20d92d4351e00853263eb", + BARREL_HK_416A5_556X45_145_INCH = "5bb20d9cd4351e00334c9d8a", + BARREL_HK_416A5_556X45_165_INCH_BARREL_WITH_FLIPUP_FRONT_SIGHT = "5bb20da5d4351e0035629dbf", + BARREL_HK_416A5_556X45_20_INCH = "5bb20dadd4351e00367faeff", + BARREL_HK_G36_556X45_228MM = "622b379bf9cfc87d675d2de5", + BARREL_HK_G36_556X45_318MM = "622b3858034a3e17ad0b81f5", + BARREL_HK_G36_556X45_480MM = "622b38c56762c718e457e246", + BARREL_HK_UMP_45_ACP_8_INCH = "5fc3e4a27283c4046c5814ab", + BARREL_HK_UMP_45_ACP_8_INCH_THREADED = "6130c3dffaa1272e43151c7d", + BARREL_HK_USP_45_ACP = "6194ef39de3cdf1d2614a768", + BARREL_HK_USP_ELITE_45_ACP = "6194f017ed0429009f543eaa", + BARREL_HK_USP_EXPERT_45_ACP = "6194eff92d2c397d6600348b", + BARREL_HK_USP_MATCH_45_ACP = "6194f02d9bb3d20b0946d2f0", + BARREL_HK_USP_TACTICAL_45_ACP_THREADED = "6194efe07c6c7b169525f11b", + BARREL_KRISS_VECTOR_45_ACP_5_INCH = "5fb65363d1409e5ca04b54f5", + BARREL_KRISS_VECTOR_45_ACP_6_INCH = "5fb653962b1b027b1f50bd03", + BARREL_KRISS_VECTOR_9X19_5_INCH = "5fbbc366ca32ed67276c1557", + BARREL_KRISS_VECTOR_9X19_6_INCH = "5fbbc383d5cb881a7363194a", + BARREL_KS23_23X75_510MM = "5e848d1c264f7c180b5e35a9", + BARREL_KS23_23X75_700MM = "5e848d2eea0a7c419c2f9bfd", + BARREL_M1911A1_45_ACP_127MM = "5e81c519cb2b95385c177551", + BARREL_M1911A1_45_ACP_NATIONAL_MATCH = "5f3e7801153b8571434a924c", + BARREL_M1911A1_45_ACP_THREADED = "5f3e77f59103d430b93f94c1", + BARREL_M1A_762X51_16_INCH = "5aaf9d53e5b5b00015042a52", + BARREL_M1A_762X51_22_INCH = "5addbac75acfc400194dbc56", + BARREL_M700_762X51_20_INCH_STAINLESS_STEEL_THREADED = "5d2703038abbc3105103d94c", + BARREL_M700_762X51_20_INCH_THREADED = "5bfebc320db8340019668d79", + BARREL_M700_762X51_26_INCH = "5bfebc250db834001a6694e1", + BARREL_M700_762X51_26_INCH_STAINLESS_STEEL = "5d2702e88abbc31ed91efc44", + BARREL_M870_12GA_355MM = "5a787f25c5856700186c4ab9", + BARREL_M870_12GA_508MM = "5a787f7ac5856700177af660", + BARREL_M870_12GA_508MM_BARREL_WITH_A_FIXED_SIGHT = "5a787ebcc5856700142fdd98", + BARREL_M870_12GA_660MM_VENT_RIB = "5a787fadc5856700155a6ca1", + BARREL_M870_12GA_SAWEDOFF_325MM = "5a787fdfc5856700142fdd9a", + BARREL_M9A3_9X19_THREADED = "5cadc1c6ae9215000f2775a4", + BARREL_MCX_300_BLK_171MM = "5fbbfabed5cb881a7363194e", + BARREL_MCX_300_BLK_229MM = "5fbbfacda56d053a3543f799", + BARREL_MCX_SPEAR_68X51_330MM = "652910565ae2ae97b80fdf35", + BARREL_MDR_556X45_16_INCH = "5c48a2852e221602b21d5923", + BARREL_MDR_762X51_16_INCH = "5dcbe9431e1f4616d354987e", + BARREL_MK18_338_LM_24_INCH = "5fc23678ab884124df0cd590", + BARREL_MK47_254MM = "60658776f2cb2e02a42ace2b", + BARREL_MK47_409MM = "6065878ac9cf8012264142fd", + BARREL_MOSIN_CARBINE_762X54R_514MM = "5bfd4cbe0db834001b73449f", + BARREL_MOSIN_RIFLE_762X54R_730MM_REGULAR = "5ae09bff5acfc4001562219d", + BARREL_MOSIN_RIFLE_762X54R_SAWEDOFF_200MM = "5bfd4cc90db834001d23e846", + BARREL_MOSIN_RIFLE_762X54R_SAWEDOFF_220MM_THREADED = "5bfd4cd60db834001c38f095", + BARREL_MOSSBERG_590A1_12GA_20_INCH = "5e87071478f43e51ca2de5e1", + BARREL_MP133_12GA_510MM = "55d4491a4bdc2d882f8b456e", + BARREL_MP133_12GA_510MM_BARREL_WITH_RIB = "560835c74bdc2dc8488b456f", + BARREL_MP133_12GA_540MM = "560836484bdc2d20478b456e", + BARREL_MP133_12GA_540MM_BARREL_WITH_RIB = "560836b64bdc2d57468b4567", + BARREL_MP133_12GA_610MM = "55d448594bdc2d8c2f8b4569", + BARREL_MP133_12GA_610MM_BARREL_WITH_RIB = "55d449444bdc2d962f8b456d", + BARREL_MP133_12GA_660MM = "560836fb4bdc2d773f8b4569", + BARREL_MP133_12GA_660MM_BARREL_WITH_RIB = "560837154bdc2da74d8b4568", + BARREL_MP133_12GA_710MM = "5608373c4bdc2dc8488b4570", + BARREL_MP133_12GA_710MM_BARREL_WITH_RIB = "560837544bdc2de22e8b456e", + BARREL_MP133_12GA_750MM = "560837824bdc2d57468b4568", + BARREL_MP133_12GA_750MM_BARREL_WITH_RIB = "5608379a4bdc2d26448b4569", + BARREL_MP153_12GA_610MM = "588200af24597742fa221dfb", + BARREL_MP153_12GA_660MM = "588200c224597743990da9ed", + BARREL_MP153_12GA_710MM = "588200cf2459774414733d55", + BARREL_MP153_12GA_750MM = "56deec93d2720bec348b4568", + BARREL_MP155_12GA_510MM = "6076c1b9f2cb2e02a42acedc", + BARREL_MP18_762X54R_600MM = "61f4012adfc9f01a816adda1", + BARREL_MP431C_12GA_510MM = "5580169d4bdc2d9d138b4585", + BARREL_MP431C_12GA_725MM = "55d447bb4bdc2d892f8b456f", + BARREL_MP43_12GA_750MM = "611a30addbdd8440277441dc", + BARREL_MP43_12GA_SAWEDOFF_310MM = "64748d02d1c009260702b526", + BARREL_MPXSD_9X19_165MM = "58aeaaa886f7744fc1560f81", + BARREL_MPX_9X19_105_INCH = "5c5db5b82e2216003a0fe71d", + BARREL_MPX_9X19_14_INCH = "5c5db5c62e22160012542255", + BARREL_MPX_9X19_203MM = "5894a2c386f77427140b8342", + BARREL_MPX_9X19_45_INCH = "5c5db5852e2216003a0fe71a", + BARREL_MPX_9X19_65_INCH = "5c5db5962e2216000e5e46eb", + BARREL_MTS25512_12GA_755MM_BARREL_WITH_RIB = "612368f58b401f4f51239b33", + BARREL_OPSKS_762X39_520MM = "634eff66517ccc8a960fc735", + BARREL_ORSIS_T5000M_762X51_660MM = "5df256570dee1b22f862e9c4", + BARREL_P226_9X19_112MM = "56d5a1f7d2720bb3418b456a", + BARREL_P226_9X19_THREADED = "587de4282459771bca0ec90b", + BARREL_PKM_762X54R_658MM = "646371faf2404ab67905c8e9", + BARREL_PKP_762X54R_658MM = "64639a9aab86f8fd4300146c", + BARREL_PL15_9X19 = "602a95edda11d6478d5a06da", + BARREL_PL15_9X19_THREADED = "602a95fe4e02ce1eaa358729", + BARREL_PPSH41_762X25_106_INCH = "5ea02bb600685063ec28bfa1", + BARREL_RFB_762X51_18_INCH = "5f2aa46b878ef416f538b567", + BARREL_RPD_762X39_520MM = "6513eff1e06849f06c0957d4", + BARREL_RPD_762X39_SAWEDOFF_350MM = "65266fd43341ed9aa903dd56", + BARREL_RPK16_545X39_15_INCH = "5beec1bd0db834001e6006f3", + BARREL_RPK16_545X39_22_INCH = "5beec2820db834001b095426", + BARREL_SA58_762X51_11_INCH = "5b099a765acfc47a8607efe3", + BARREL_SA58_762X51_16_INCH = "5b7be1125acfc4001876c0e5", + BARREL_SA58_762X51_21_INCH = "5b7be1265acfc400161d0798", + BARREL_SKS_762X39_520MM = "634f02331f9f536910079b51", + BARREL_SR25_762X51_16_INCH = "5df917564a9f347bc92edca3", + BARREL_SR25_762X51_20_INCH = "5dfa397fb11454561e39246c", + BARREL_STEYR_AUG_A1_556X45_16_INCH = "6333f05d1bc0e6217a0e9d34", + BARREL_STEYR_AUG_A1_556X45_20_INCH = "62e7c7f3c34ea971710c32fc", + BARREL_STEYR_AUG_A3_556X45_16_INCH = "630e39c3bd357927e4007c15", + BARREL_STM9_9X19_105_INCH = "603372b4da11d6478d5a07ff", + BARREL_STM9_9X19_12_INCH = "603372d154072b51b239f9e1", + BARREL_STM9_9X19_14_INCH = "603372f153a60014f970616d", + BARREL_STM9_9X19_16_INCH = "603373004e02ce1eaa358814", + BARREL_SVDS_762X54R_22_INCH = "5c471cb32e221602b177afaa", + BARREL_SVT40_762X54R_625MM = "6410758c857473525b08bb77", + BARREL_TT_762X25_116MM = "571a26d524597720680fbe8a", + BARREL_TT_762X25_116MM_GILDED = "5b3baf8f5acfc40dc5296692", + BARREL_TT_762X25_121MM_HOMESPUN_THREADED = "571a279b24597720b4066566", + BARREL_VPO215_GORNOSTAY_366TKM_23_INCH = "5de65547883dde217541644b", + BARREL_VSK94_9X39 = "645123013d52156624001fd1", + BARTER_42_SIGNATURE_BLEND_ENGLISH_TEA = "5bc9be8fd4351e00334cae6e", + BARTER_6STEN140M_MILITARY_BATTERY = "5d03794386f77420415576f5", + BARTER_AA_BATTERY = "5672cb124bdc2d1a0f8b4568", + BARTER_ADVANCED_CURRENT_CONVERTER = "6389c85357baa773a825b356", + BARTER_ALKALINE_CLEANER_FOR_HEAT_EXCHANGERS = "59faf98186f774067b6be103", + BARTER_ANALOG_THERMOMETER = "5d1b32c186f774252167a530", + BARTER_ANTIQUE_TEAPOT = "590de71386f774347051a052", + BARTER_ANTIQUE_VASE = "590de7e986f7741b096e5f32", + BARTER_APOLLO_SOYUZ_CIGARETTES = "573475fb24597737fb1379e1", + BARTER_AQUAPEPS_WATER_PURIFICATION_TABLETS = "6389c6c7dbfd5e4b95197e68", + BARTER_ARAMID_FIBER_FABRIC = "5e2af4d286f7746d4159f07a", + BARTER_AWL = "62a0a098de7ac8199358053b", + BARTER_AXEL_PARROT_FIGURINE = "62a091170b9d3c46de5b6cf2", + BARTER_BATTERED_ANTIQUE_BOOK = "5bc9c049d4351e44f824d360", + BARTER_BEAR_BUDDY_PLUSH_TOY = "62a08f4c4f842e1bd12d9d62", + BARTER_BEAR_OPERATIVE_FIGURINE = "655c652d60d0ac437100fed7", + BARTER_BOLTS = "57347c5b245977448d35f6e1", + BARTER_BOTTLE_OF_HYDROGEN_PEROXIDE = "59e361e886f774176c10a2a5", + BARTER_BOTTLE_OF_OLOLO_MULTIVITAMINS = "62a0a043cf4a99369e2624a5", + BARTER_BOTTLE_OF_SALINE_SOLUTION = "59e3606886f77417674759a5", + BARTER_BROKEN_GPHONE_SMARTPHONE = "56742c324bdc2d150f8b456d", + BARTER_BROKEN_GPHONE_X_SMARTPHONE = "5c1265fc86f7743f896a21c2", + BARTER_BROKEN_LCD = "5d1b309586f77425227d1676", + BARTER_BRONZE_LION_FIGURINE = "59e3639286f7741777737013", + BARTER_BULBEX_CABLE_CUTTER = "619cbfeb6b8a1b37a54eebfa", + BARTER_BUNDLE_OF_WIRES = "5c06779c86f77426e00dd782", + BARTER_CAN_OF_DR_LUPOS_COFFEE_BEANS = "5e54f6af86f7742199090bf3", + BARTER_CAN_OF_MAJAICA_COFFEE_BEANS = "5af0484c86f7740f02001f7f", + BARTER_CAN_OF_THERMITE = "60391a8b3364dc22b04d0ce5", + BARTER_CAN_OF_WHITE_SALT = "62a09ee4cf4a99369e262453", + BARTER_CAPACITORS = "5c06782b86f77426df5407d2", + BARTER_CAR_BATTERY = "5733279d245977289b77ec24", + BARTER_CAT_FIGURINE = "59e3658a86f7741776641ac4", + BARTER_CHAINLET = "573474f924597738002c6174", + BARTER_CHAIN_WITH_PROKILL_MEDALLION = "5c1267ee86f77416ec610f72", + BARTER_CHRISTMAS_TREE_ORNAMENT_RED = "5df8a6a186f77412640e2e80", + BARTER_CHRISTMAS_TREE_ORNAMENT_SILVER = "5df8a72c86f77412640e2e83", + BARTER_CHRISTMAS_TREE_ORNAMENT_VIOLET = "5df8a77486f77412672a1e3f", + BARTER_CLASSIC_MATCHES = "57347b8b24597737dd42e192", + BARTER_CLIN_WINDOW_CLEANER = "59e358a886f7741776641ac3", + BARTER_CONSTRUCTION_MEASURING_TAPE = "590c2c9c86f774245b1f03f2", + BARTER_CORDURA_POLYAMIDE_FABRIC = "5e2af41e86f774755a234b67", + BARTER_CORRUGATED_HOSE = "59e35cbb86f7741778269d83", + BARTER_CPU_FAN = "5734779624597737e04bf329", + BARTER_CRICKENT_LIGHTER = "56742c284bdc2d98058b456d", + BARTER_CULTIST_FIGURINE = "655c669103999d3c810c025b", + BARTER_CYCLON_RECHARGEABLE_BATTERY = "5e2aee0a86f774755a234b62", + BARTER_DAMAGED_HARD_DRIVE = "590a386e86f77429692b27ab", + BARTER_DEADLYSLOBS_BEARD_OIL = "5bc9b9ecd4351e3bac122519", + BARTER_DED_MOROZ_FIGURINE = "655c67ab0d37ca5135388f4b", + BARTER_DEN_FIGURINE = "66572b8d80b1cd4b6a67847f", + BARTER_DISPOSABLE_SYRINGE = "5d1b3f2d86f774253763b735", + BARTER_DOGTAGT = "5b9b9020e7ef6f5716480215", + BARTER_DOGTAG_BEAR = "59f32bb586f774757e1e8442", + BARTER_DOGTAG_BEAR_EOD = "6662e9aca7e0b43baa3d5f74", + BARTER_DOGTAG_BEAR_TUE = "6662e9cda7e0b43baa3d5f76", + BARTER_DOGTAG_USEC = "59f32c3b86f77472a31742f0", + BARTER_DOGTAG_USEC_EOD = "6662e9f37fa79a6d83730fa0", + BARTER_DOGTAG_USEC_TUE = "6662ea05f6259762c56f3189", + BARTER_DRY_FUEL = "590a373286f774287540368b", + BARTER_DUCT_TAPE = "57347c1124597737fb1379e3", + BARTER_DVD_DRIVE = "5734781f24597737e04bf32a", + BARTER_D_SIZE_BATTERY = "5672cb304bdc2dc2088b456a", + BARTER_ELECTRIC_DRILL = "59e35de086f7741778269d84", + BARTER_ELECTRIC_MOTOR = "5d1b2fa286f77425227d1674", + BARTER_ELECTRONIC_COMPONENTS = "6389c70ca33d8c4cdf4932c6", + BARTER_ENERGYSAVING_LAMP = "590a3cd386f77436f20848cb", + BARTER_EXPEDITIONARY_FUEL_TANK = "5d1b371186f774253763a656", + BARTER_FARFORWARD_GPS_SIGNAL_AMPLIFIER_UNIT = "6389c7f115805221fb410466", + BARTER_FIERCE_BLOW_SLEDGEHAMMER = "63a0b208f444d32d6f03ea1e", + BARTER_FIREKLEAN_GUN_LUBE = "5bc9b355d4351e6d1509862a", + BARTER_FLAT_SCREWDRIVER = "5d63d33b86f7746ea9275524", + BARTER_FLAT_SCREWDRIVER_LONG = "5d4042a986f7743185265463", + BARTER_FLEECE_FABRIC = "5e2af47786f7746d404f3aaa", + BARTER_FP100_FILTER_ABSORBER = "5d1b2f3f86f774252167a52c", + BARTER_FUEL_CONDITIONER = "5b43575a86f77424f443fe62", + BARTER_GAS_ANALYZER = "590a3efd86f77437d351a25b", + BARTER_GAS_MASK_AIR_FILTER = "590c595c86f7747884343ad7", + BARTER_GEIGERMULLER_COUNTER = "5672cb724bdc2dc2088b456b", + BARTER_GOLDEN_1GPHONE_SMARTPHONE = "5bc9b720d4351e450201234b", + BARTER_GOLDEN_EGG = "62a09cfe4f842e1bd12da3e4", + BARTER_GOLDEN_NECK_CHAIN = "5734758f24597738025ee253", + BARTER_GOLDEN_ROOSTER_FIGURINE = "5bc9bc53d4351e00367fbcee", + BARTER_GOLD_SKULL_RING = "5d235a5986f77443f6329bc6", + BARTER_GRAPHICS_CARD = "57347ca924597744596b4e71", + BARTER_GREENBAT_LITHIUM_BATTERY = "5e2aedd986f7746d404f3aa4", + BARTER_GUNPOWDER_EAGLE = "5d6fc78386f77449d825f9dc", + BARTER_GUNPOWDER_HAWK = "5d6fc87386f77449db3db94e", + BARTER_GUNPOWDER_KITE = "590c5a7286f7747884343aea", + BARTER_HAND_DRILL = "5d1b317c86f7742523398392", + BARTER_HORSE_FIGURINE = "573478bc24597738002c6175", + BARTER_HUNTING_MATCHES = "5e2af2bc86f7746d3f3c33fc", + BARTER_INSULATING_TAPE = "5734795124597738002c6176", + BARTER_IRIDIUM_MILITARY_THERMAL_VISION_MODULE = "5d0377ce86f774186372f689", + BARTER_KEKTAPE_DUCT_TAPE = "5e2af29386f7746d4159f077", + BARTER_KILLA_FIGURINE = "66572c82ad599021091c6118", + BARTER_LEDX_SKIN_TRANSILLUMINATOR = "5c0530ee86f774697952d952", + BARTER_LEGA_MEDAL = "6656560053eaaa7a23349c86", + BARTER_LIGHT_BULB = "5d1b392c86f77425243e98fe", + BARTER_LOCKED_EQUIPMENT_RATE_COMMON = "66588b514de4820934746dc6", + BARTER_LOCKED_EQUIPMENT_RATE_EPIC = "6658285190486915542256c4", + BARTER_LOCKED_EQUIPMENT_RATE_RARE = "66571bf06a723f7f005a0619", + BARTER_LOCKED_SUPPLY_RATE_COMMON = "66588ba291f6e93c4c06efef", + BARTER_LOCKED_SUPPLY_RATE_EPIC = "665828c44de4820934746ce4", + BARTER_LOCKED_SUPPLY_RATE_RARE = "66572b88ac60f009f270d1dc", + BARTER_LOCKED_VALUABLES_RATE_COMMON = "66588bb047fbd536a674240e", + BARTER_LOCKED_VALUABLES_RATE_EPIC = "665828f490486915542256c6", + BARTER_LOCKED_VALUABLES_RATE_RARE = "66572bb3ac60f009f270d1df", + BARTER_LOCKED_WEAPON_RATE_COMMON = "66588b6dcb48a73e674b2649", + BARTER_LOCKED_WEAPON_RATE_EPIC = "66582889efd94e2d665b14a2", + BARTER_LOCKED_WEAPON_RATE_RARE = "66572b3f6a723f7f005a066c", + BARTER_LOOT_LORD_PLUSHIE = "60b0f7057897d47c5b04ab94", + BARTER_LVNDMARKS_RAT_POISON = "60b0f561c4449e4cb624c1d7", + BARTER_MAGNET = "590a391c86f774385a33c404", + BARTER_MALBORO_CIGARETTES = "573476d324597737da2adc13", + BARTER_MEDICAL_BLOODSET = "5b4335ba86f7744d2837a264", + BARTER_MEDICAL_TOOLS = "619cc01e0a7c3a1a2731940c", + BARTER_METAL_CUTTING_SCISSORS = "5d40419286f774318526545f", + BARTER_METAL_FUEL_TANK = "5d1b36a186f7742523398433", + BARTER_METAL_SPARE_PARTS = "61bf7b6302b3924be92fa8c3", + BARTER_MICROCONTROLLER_BOARD = "6389c7750ef44505c87f5996", + BARTER_MILITARY_CABLE = "5d0375ff86f774186372f685", + BARTER_MILITARY_CIRCUIT_BOARD = "5d0376a486f7747d8050965c", + BARTER_MILITARY_COFDM_WIRELESS_SIGNAL_TRANSMITTER = "5c052f6886f7746b1e3db148", + BARTER_MILITARY_CORRUGATED_TUBE = "619cbf476b8a1b37a54eebf8", + BARTER_MILITARY_GYROTACHOMETER = "5d03784a86f774203e7e0c4d", + BARTER_MILITARY_POWER_FILTER = "5d0378d486f77420421a5ff4", + BARTER_MR_KERMANS_CAT_HOLOGRAM = "6638a5474e92f038531e210e", + BARTER_NIPPERS = "5d40425986f7743185265461", + BARTER_NIXXOR_LENS = "5d1b2ffd86f77425243e8d17", + BARTER_OFZ_30X165MM_SHELL = "5d0379a886f77420407aa271", + BARTER_OLD_FIRESTEEL = "5bc9c377d4351e3bac12251b", + BARTER_OPHTHALMOSCOPE = "5af0534a86f7743b6f354284", + BARTER_ORTODONTOX_TOOTHPASTE = "5d4041f086f7743cac3f22a7", + BARTER_OX_BLEACH = "59e3556c86f7741776641ac2", + BARTER_PACK_OF_ARSENIY_BUCKWHEAT = "6389c6463485cf0eeb260715", + BARTER_PACK_OF_CHLORINE = "5e2af02c86f7746d420957d4", + BARTER_PACK_OF_NAILS = "590c31c586f774245e3141b2", + BARTER_PACK_OF_SCREWS = "59e35ef086f7741777737012", + BARTER_PACK_OF_SODIUM_BICARBONATE = "59e35abd86f7741778269d82", + BARTER_PAID_ANTIROACH_SPRAY = "59e3596386f774176c10a2a2", + BARTER_PARACORD = "5c12688486f77426843c7d32", + BARTER_PC_CPU = "573477e124597737dd42e191", + BARTER_PHASED_ARRAY_ELEMENT = "5d03775b86f774203e7e0c4b", + BARTER_PHASE_CONTROL_RELAY = "5d1b313086f77425227d1678", + BARTER_PHYSICAL_BITCOIN = "59faff1d86f7746c51718c9c", + BARTER_PIECE_OF_PLEXIGLASS = "59e366c186f7741778269d85", + BARTER_PILE_OF_MEDS = "5d1b3a5d86f774252167ba22", + BARTER_PIPE_GRIP_WRENCH = "619cbfccbedcde2f5b3f7bdd", + BARTER_PLIERS = "590c2b4386f77425357b6123", + BARTER_PLIERS_ELITE = "5af04b6486f774195a3ebb49", + BARTER_POLITICIAN_MUTKEVICH_FIGURINE = "655c66e40b2de553b618d4b8", + BARTER_PORTABLE_DEFIBRILLATOR = "5c052e6986f7746b207bc3c9", + BARTER_PORTABLE_POWERBANK = "5af0561e86f7745f5f3ad6ac", + BARTER_POWER_CORD = "59e36c6f86f774176c10a2a7", + BARTER_POWER_SUPPLY_UNIT = "57347c2e24597744902c94a1", + BARTER_PRESSURE_GAUGE = "5d1b327086f7742525194449", + BARTER_PRESS_PASS_ISSUED_FOR_NOICEGUY = "62a09cb7a04c0c5c6e0a84f8", + BARTER_PRINTED_CIRCUIT_BOARD = "590a3b0486f7743954552bdb", + BARTER_PRINTER_PAPER = "577e1c9d2459773cd707c525", + BARTER_PROPANE_TANK_5L = "59fafb5d86f774067a6f2084", + BARTER_RADIATOR_HELIX = "5d1c774f86f7746d6620f8db", + BARTER_RAM = "57347baf24597738002c6178", + BARTER_RATCHET_WRENCH = "60391afc25aff57af81f7085", + BARTER_RAVEN_FIGURINE = "5e54f62086f774219b0f1937", + BARTER_RECHARGEABLE_BATTERY = "590a358486f77429692b2790", + BARTER_REPELLENT = "5e2aef7986f7746d3f3c33f5", + BARTER_RESHALA_FIGURINE = "66572be36a723f7f005a066e", + BARTER_RIPSTOP_FABRIC = "5e2af4a786f7746d3f3c3400", + BARTER_ROLER_SUBMARINER_GOLD_WRIST_WATCH = "59faf7ca86f7740dbe19f6c2", + BARTER_ROUND_PLIERS = "5d1b31ce86f7742523398394", + BARTER_RYZHY_FIGURINE = "655c67782a1356436041c9c5", + BARTER_SCAV_FIGURINE = "655c673673a43e23e857aebd", + BARTER_SCHAMAN_SHAMPOO = "5d40412b86f7743cb332ac3a", + BARTER_SCREWDRIVER = "590c2d8786f774245b1f03f3", + BARTER_SCREW_NUTS = "57347c77245977448d35f6e2", + BARTER_SET_OF_FILES_MASTER = "62a0a0bb621468534a797ad5", + BARTER_SEWING_KIT = "61bf83814088ec1a363d7097", + BARTER_SHUSTRILO_SEALING_FOAM = "590c35a486f774273531c822", + BARTER_SILICONE_TUBE = "5d1b39a386f774252339976f", + BARTER_SILVER_BADGE = "5bc9bdb8d4351e003562b8a1", + BARTER_SMOKED_CHIMNEY_DRAIN_CLEANER = "5e2af00086f7746d3f3c33f7", + BARTER_SOAP = "5c13cd2486f774072c757944", + BARTER_SPARK_PLUG = "590a3c0a86f774385a33c450", + BARTER_STRIKE_CIGARETTES = "5734770f24597738025ee254", + BARTER_SURVL_SURVIVOR_LIGHTER = "5e2af37686f774755a234b65", + BARTER_TAGILLA_FIGURINE = "66572cbdad599021091c611a", + BARTER_TETRIZ_PORTABLE_GAME_CONSOLE = "5c12620d86f7743f8b198b72", + BARTER_TOILET_PAPER = "5c13cef886f774072e618e82", + BARTER_TOOLSET = "590c2e1186f77425357b6124", + BARTER_TOOTHPASTE = "57347c93245977448d35f6e3", + BARTER_TP200_TNT_BRICK = "60391b0fb847c71012789415", + BARTER_TSHAPED_PLUG = "57347cd0245977445a2d6ff1", + BARTER_TUBE_OF_POXERAM_COLD_WELDING = "5e2af22086f7746d3f3c33fa", + BARTER_UHF_RFID_READER = "5c052fb986f7746b2101e909", + BARTER_ULTRALINK_SATELLITE_INTERNET_STATION = "6389c88b33a719183c7f63b6", + BARTER_ULTRAVIOLET_LAMP = "590a3d9c86f774385926e510", + BARTER_USB_ADAPTER = "5909e99886f7740c983b9984", + BARTER_USEC_OPERATIVE_FIGURINE = "655c663a6689c676ce57af85", + BARTER_UZRGM_GRENADE_FUZE = "5e2af51086f7746d3f3c3402", + BARTER_VERITAS_GUITAR_PICK = "5f745ee30acaeb0d490d8c5b", + BARTER_VIRTEX_PROGRAMMABLE_PROCESSOR = "5c05308086f7746b2101e90b", + BARTER_VPX_FLASH_STORAGE_MODULE = "5c05300686f7746dce784e5d", + BARTER_WATER_FILTER = "5d1b385e86f774252167b98a", + BARTER_WD40_100ML = "590c5bbd86f774785762df04", + BARTER_WD40_400ML = "590c5c9f86f77477c91c36e7", + BARTER_WEAPON_PARTS = "5d1c819a86f774771b0acd6c", + BARTER_WILSTON_CIGARETTES = "573476f124597737e04bf328", + BARTER_WOODEN_CLOCK = "59e3647686f774176a362507", + BARTER_WORKING_LCD = "5d1b304286f774253763a528", + BARTER_WRENCH = "590c311186f77424d1667482", + BARTER_XENOMORPH_SEALING_FOAM = "590c346786f77423e50ed342", + BARTER_ZIBBO_LIGHTER = "56742c2e4bdc2d95058b456d", + BIPOD_HARRIS_HBR = "5888961624597754281f93f3", + BIPOD_HK_G36 = "622b397c9a3d4327e41843b6", + BIPOD_PK = "6464d870bb2c580352070cc4", + BIPOD_RPD = "6513f037e06849f06c0957d7", + BIPOD_SV98 = "56ea8222d2720b69698b4567", + BUILTININSERTS_6B13_KILLA_LEVEL3_SOFT_ARMOR_BACK = "6575ea4cf6a13a7b7100adc4", + BUILTININSERTS_6B13_KILLA_LEVEL3_SOFT_ARMOR_COLLAR = "6575ea719c7cad336508e418", + BUILTININSERTS_6B13_KILLA_LEVEL3_SOFT_ARMOR_FRONT = "6575ea3060703324250610da", + BUILTININSERTS_6B13_KILLA_LEVEL3_SOFT_ARMOR_GROIN_FRONT = "6575ea7c60703324250610e2", + BUILTININSERTS_6B13_KILLA_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "6575ea5cf6a13a7b7100adc8", + BUILTININSERTS_6B13_KILLA_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "6575ea6760703324250610de", + BUILTININSERTS_6B13_LEVEL2_SOFT_ARMOR_BACK = "654a8976f414fcea4004d78b", + BUILTININSERTS_6B13_LEVEL2_SOFT_ARMOR_COLLAR = "654a8ae00337d53f9102c2aa", + BUILTININSERTS_6B13_LEVEL2_SOFT_ARMOR_FRONT = "654a8b0b0337d53f9102c2ae", + BUILTININSERTS_6B13_LEVEL2_SOFT_ARMOR_GROIN = "654a8bc5f414fcea4004d79b", + BUILTININSERTS_6B13_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "654a8b3df414fcea4004d78f", + BUILTININSERTS_6B13_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "654a8b80f414fcea4004d797", + BUILTININSERTS_6B231_LEVEL2_SOFT_ARMOR_BACK = "6571baa74cb80d995d0a1490", + BUILTININSERTS_6B231_LEVEL2_SOFT_ARMOR_COLLAR = "6571babb4076795e5e07383f", + BUILTININSERTS_6B231_LEVEL2_SOFT_ARMOR_FRONT = "6571b27a6d84a2b8b6007f92", + BUILTININSERTS_6B231_LEVEL2_SOFT_ARMOR_GROIN_BACK = "6571babf4cb80d995d0a1494", + BUILTININSERTS_6B231_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "6571bac34076795e5e073843", + BUILTININSERTS_6B231_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "6571baac6d84a2b8b6007fa3", + BUILTININSERTS_6B231_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "6571bab0f41985531a038091", + BUILTININSERTS_6B232_LEVEL2_SOFT_ARMOR_BACK = "6570800612755ae0d907acf8", + BUILTININSERTS_6B232_LEVEL2_SOFT_ARMOR_COLLAR = "657080ca12755ae0d907ad5e", + BUILTININSERTS_6B232_LEVEL2_SOFT_ARMOR_FRONT = "65707fc348c7a887f2010432", + BUILTININSERTS_6B232_LEVEL2_SOFT_ARMOR_GROIN_BACK = "65708165696fe382cf073255", + BUILTININSERTS_6B232_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "65708122f65e2491bf009755", + BUILTININSERTS_6B232_LEVEL2_SOFT_ARMOR_LEFT = "65708070f65e2491bf00972c", + BUILTININSERTS_6B232_LEVEL2_SOFT_ARMOR_RIGHT = "657080a212755ae0d907ad04", + BUILTININSERTS_6B2_LEVEL2_SOFT_ARMOR_BACK = "656fd89bf5a9631d4e042575", + BUILTININSERTS_6B2_LEVEL2_SOFT_ARMOR_FRONT = "656fd7c32668ef0402028fb9", + BUILTININSERTS_6B3TM_LEVEL2_SOFT_ARMOR_BACK = "65764fae2bc38ef78e07648d", + BUILTININSERTS_6B3TM_LEVEL2_SOFT_ARMOR_GROIN_BACK = "6576500f526e320fbe03577f", + BUILTININSERTS_6B3TM_LEVEL4_SOFT_ARMOR_FRONT = "65764e1e2bc38ef78e076489", + BUILTININSERTS_6B3TM_LEVEL4_SOFT_ARMOR_GROIN_FRONT = "6576504b526e320fbe035783", + BUILTININSERTS_6B43_6A_LEVEL3_SOFT_ARMOR_BACK = "6575ce45dc9932aed601c616", + BUILTININSERTS_6B43_6A_LEVEL3_SOFT_ARMOR_COLLAR = "6575ce6f16c2762fba005806", + BUILTININSERTS_6B43_6A_LEVEL3_SOFT_ARMOR_FRONT = "6575ce3716c2762fba0057fd", + BUILTININSERTS_6B43_6A_LEVEL3_SOFT_ARMOR_GROIN_FRONT = "6575ce8bdc9932aed601c61e", + BUILTININSERTS_6B43_6A_LEVEL3_SOFT_ARMOR_LEFT_ARM = "6575ce9db15fef3dd4051628", + BUILTININSERTS_6B43_6A_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "6575ce5016c2762fba005802", + BUILTININSERTS_6B43_6A_LEVEL3_SOFT_ARMOR_RIGHT_ARM = "6575cea8b15fef3dd405162c", + BUILTININSERTS_6B43_6A_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "6575ce5befc786cd9101a671", + BUILTININSERTS_6B515_LEVEL2_SOFT_ARMOR_COLLAR = "65708afe4a747dbb63005eee", + BUILTININSERTS_6B515_LEVEL4_SOFT_ARMOR_BACK = "6570880f4a747dbb63005ee5", + BUILTININSERTS_6B515_LEVEL4_SOFT_ARMOR_FRONT = "657087577f6d4590ac0d2109", + BUILTININSERTS_6B515_LEVEL4_SOFT_ARMOR_GROIN = "65708b4c4a747dbb63005ef3", + BUILTININSERTS_6B516_LEVEL2_SOFT_ARMOR_BACK = "65764bc22bc38ef78e076485", + BUILTININSERTS_6B516_LEVEL2_SOFT_ARMOR_COLLAR = "65764c39526e320fbe035777", + BUILTININSERTS_6B516_LEVEL3_SOFT_ARMOR_FRONT = "65764a4cd8537eb26a0355ee", + BUILTININSERTS_6B516_LEVEL3_SOFT_ARMOR_GROIN = "65764c6b526e320fbe03577b", + BUILTININSERTS_ADEPT_NEOSTEEL_LEVEL3_HELMET_ARMOR_NAPE = "657f9ef6c6679fefb3051e1f", + BUILTININSERTS_ADEPT_NEOSTEEL_LEVEL3_HELMET_ARMOR_TOP = "657f9eb7e9433140ad0baf86", + BUILTININSERTS_ALTIN_LEVEL5_HELMET_ARMOR_EARS = "657bc107aab96fccee08be9f", + BUILTININSERTS_ALTIN_LEVEL5_HELMET_ARMOR_NAPE = "657bc0d8a1c61ee0c303632f", + BUILTININSERTS_ALTIN_LEVEL5_HELMET_ARMOR_TOP = "657bc06daab96fccee08be9b", + BUILTININSERTS_ANA_M1_LEVEL2_SOFT_ARMOR_BACK = "65730c2213a2f660f60bea96", + BUILTININSERTS_ANA_M1_LEVEL2_SOFT_ARMOR_FRONT = "65730c0e292ecadbfa09ad49", + BUILTININSERTS_ANA_M1_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65730c2b292ecadbfa09ad50", + BUILTININSERTS_ANA_M1_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "65730c35292ecadbfa09ad54", + BUILTININSERTS_ANA_TACT_M2_LEVEL3_SOFT_ARMOR_BACK = "6570f71dd67d0309980a7af8", + BUILTININSERTS_ANA_TACT_M2_LEVEL3_SOFT_ARMOR_FRONT = "6570f6e774d84423df065f21", + BUILTININSERTS_ANA_TACT_M2_LEVEL3_SOFT_ARMOR_LEFT = "6570f74774d84423df065f25", + BUILTININSERTS_ANA_TACT_M2_LEVEL3_SOFT_ARMOR_RIGHT = "6570f79c4c65ab77a6015121", + BUILTININSERTS_ARSARMA_A18_LEVEL2_SOFT_ARMOR_BACK = "6570e479a6560e4ee50c2b02", + BUILTININSERTS_ARSARMA_A18_LEVEL2_SOFT_ARMOR_FRONT = "6570e5100b57c03ec90b970a", + BUILTININSERTS_ARSARMA_A18_LEVEL2_SOFT_ARMOR_LEFT = "6570e5674cc0d2ab1e05edbb", + BUILTININSERTS_ARSARMA_A18_LEVEL2_SOFT_ARMOR_RIGHT = "6570e59b0b57c03ec90b970e", + BUILTININSERTS_ARS_CPC_LEVEL3_SOFT_ARMOR_BACK = "6575ef6bf6a13a7b7100b093", + BUILTININSERTS_ARS_CPC_LEVEL3_SOFT_ARMOR_FRONT = "6575ef599c7cad336508e453", + BUILTININSERTS_ARS_CPC_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "6575ef78da698a4e980677eb", + BUILTININSERTS_ARS_CPC_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "6575ef7f9c7cad336508e457", + BUILTININSERTS_AVS_MBAV_LEVEL3_SOFT_ARMOR_BACK = "6575f5e1da698a4e98067869", + BUILTININSERTS_AVS_MBAV_LEVEL3_SOFT_ARMOR_FRONT = "6575f5cbf6a13a7b7100b0bf", + BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_BACK = "657322a4cea9255e21023651", + BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_FRONT = "657322988c1cc6dcd9098b2d", + BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657322acd9d89ff7ac0d961b", + BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "657322b7d9d89ff7ac0d961f", + BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_BACK = "6573102b292ecadbfa09b38d", + BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_FRONT = "6573101e292ecadbfa09b389", + BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65731038292ecadbfa09b391", + BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "65731045f31d5be00e08a75a", + BUILTININSERTS_BNTI_LSHZ_2DTM_LEVEL4_HELMET_ARMOR_EARS = "657fa07387e11c61f70bface", + BUILTININSERTS_BNTI_LSHZ_2DTM_LEVEL4_HELMET_ARMOR_NAPE = "657fa04ac6679fefb3051e24", + BUILTININSERTS_BNTI_LSHZ_2DTM_LEVEL4_HELMET_ARMOR_TOP = "657fa009d4caf976440afe3a", + BUILTININSERTS_CLASS_TOR2_LEVEL3_HELMET_ARMOR_EARS = "657fa186d4caf976440afe42", + BUILTININSERTS_CLASS_TOR2_LEVEL3_HELMET_ARMOR_NAPE = "657fa168e9433140ad0baf8e", + BUILTININSERTS_CLASS_TOR2_LEVEL3_HELMET_ARMOR_TOP = "657fa0fcd4caf976440afe3e", + BUILTININSERTS_CQC_MK4A_LEVEL2_SOFT_ARMOR_BACK = "6570fa1f4c65ab77a601512f", + BUILTININSERTS_CQC_MK4A_LEVEL2_SOFT_ARMOR_COLLAR = "6570fb8f4c65ab77a601514d", + BUILTININSERTS_CQC_MK4A_LEVEL2_SOFT_ARMOR_FRONT = "6570fae34c65ab77a6015146", + BUILTININSERTS_CQC_MK4A_LEVEL2_SOFT_ARMOR_LEFT = "6570fb22584a51c23e03251f", + BUILTININSERTS_CQC_MK4A_LEVEL2_SOFT_ARMOR_LEFT_ARM = "6570fbdd74d84423df065f60", + BUILTININSERTS_CQC_MK4A_LEVEL2_SOFT_ARMOR_RIGHT = "6570fb6ad3eefd23430f8c7c", + BUILTININSERTS_CQC_MK4A_LEVEL2_SOFT_ARMOR_RIGHT_ARM = "6570fc41d3eefd23430f8c83", + BUILTININSERTS_CQC_MK4A_P_LEVEL3_SOFT_ARMOR_BACK = "657333232cc8dfad2c0a3d97", + BUILTININSERTS_CQC_MK4A_P_LEVEL3_SOFT_ARMOR_COLLAR = "6573334aca0ca984940a2d5b", + BUILTININSERTS_CQC_MK4A_P_LEVEL3_SOFT_ARMOR_FRONT = "65733312ca0ca984940a2d53", + BUILTININSERTS_CQC_MK4A_P_LEVEL3_SOFT_ARMOR_LEFT_ARM = "65733375b7a8d286530e3dd7", + BUILTININSERTS_CQC_MK4A_P_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657333302cc8dfad2c0a3d9b", + BUILTININSERTS_CQC_MK4A_P_LEVEL3_SOFT_ARMOR_RIGHT_ARM = "6573337f2cc8dfad2c0a3da7", + BUILTININSERTS_CQC_MK4A_P_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "6573333eca0ca984940a2d57", + BUILTININSERTS_CRYE_AVS_LEVEL3_SOFT_ARMOR_BACK = "6570e87c23c1f638ef0b0ee2", + BUILTININSERTS_CRYE_AVS_LEVEL3_SOFT_ARMOR_FRONT = "6570e83223c1f638ef0b0ede", + BUILTININSERTS_CRYE_AVS_LEVEL3_SOFT_ARMOR_GROIN = "6570e90b3a5689d85f08db97", + BUILTININSERTS_CRYE_AVS_LEVEL3_SOFT_ARMOR_LEFT = "6570e8a623c1f638ef0b0ee6", + BUILTININSERTS_CRYE_AVS_LEVEL3_SOFT_ARMOR_RIGHT = "6570e8e7ab49e964120b4563", + BUILTININSERTS_CRYE_CPC_LEVEL3_SOFT_ARMOR_BACK = "6575f25ada698a4e98067836", + BUILTININSERTS_CRYE_CPC_LEVEL3_SOFT_ARMOR_FRONT = "6575f24ff6a13a7b7100b09e", + BUILTININSERTS_CRYE_CPC_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "6575f2649cfdfe416f0399b8", + BUILTININSERTS_CRYE_CPC_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "6575f26d9c7cad336508e480", + BUILTININSERTS_CRYE_PRECISION_AIRFRAME_LEVEL4_HELMET_ARMOR_NAPE = "657f98fbada5fadd1f07a585", + BUILTININSERTS_CRYE_PRECISION_AIRFRAME_LEVEL4_HELMET_ARMOR_TOP = "657f9897f4c82973640b235e", + BUILTININSERTS_DEFENDER2_LEVEL3_SOFT_ARMOR_BACK = "65732df4d0acf75aea06c87b", + BUILTININSERTS_DEFENDER2_LEVEL3_SOFT_ARMOR_COLLAR = "65732e215d3a3129fb05f3e1", + BUILTININSERTS_DEFENDER2_LEVEL3_SOFT_ARMOR_FRONT = "65732de75d3a3129fb05f3dd", + BUILTININSERTS_DEFENDER2_LEVEL3_SOFT_ARMOR_GROIN_FRONT = "65732e30dd8739f6440ef383", + BUILTININSERTS_DEFENDER2_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "65732e05d0acf75aea06c87f", + BUILTININSERTS_DEFENDER2_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "65732e0f6784ca384b0167ad", + BUILTININSERTS_DIAMOND_AGE_BASTION_LEVEL4_HELMET_ARMOR_NAPE = "657f9a94ada5fadd1f07a589", + BUILTININSERTS_DIAMOND_AGE_BASTION_LEVEL4_HELMET_ARMOR_TOP = "657f9a55c6679fefb3051e19", + BUILTININSERTS_DJETA_PSH97_LEVEL2_HELMET_ARMOR_EARS = "657ba75e23918923cb0df573", + BUILTININSERTS_DJETA_PSH97_LEVEL2_HELMET_ARMOR_NAPE = "657ba737b7e9ca9a02045bf6", + BUILTININSERTS_DJETA_PSH97_LEVEL2_HELMET_ARMOR_SHIELD = "658188edf026a90c1708c827", + BUILTININSERTS_DJETA_PSH97_LEVEL2_HELMET_ARMOR_TOP = "657ba6c3c6f689d3a205b857", + BUILTININSERTS_DRD_LEVEL3_SOFT_ARMOR_BACK = "6572e059371fccfbf909d5dc", + BUILTININSERTS_DRD_LEVEL3_SOFT_ARMOR_FRONT = "6572e048371fccfbf909d5d8", + BUILTININSERTS_DRD_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "6572e06219b4b511af012f89", + BUILTININSERTS_DRD_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "6572e06819b4b511af012f8d", + BUILTININSERTS_EXFIL_LEVEL4_HELMET_ARMOR_NAPE = "655200ba0ef76cf7be09d528", + BUILTININSERTS_EXFIL_LEVEL4_HELMET_ARMOR_TOP = "6551fec55d0cf82e51014288", + BUILTININSERTS_FIREFIGHTER_SHPM_LEVEL2_HELMET_ARMOR_EARS = "657ba8eab7e9ca9a02045bfd", + BUILTININSERTS_FIREFIGHTER_SHPM_LEVEL2_HELMET_ARMOR_NAPE = "657ba8bccfcf63c951052dab", + BUILTININSERTS_FIREFIGHTER_SHPM_LEVEL2_HELMET_ARMOR_SHIELD = "65818e4e566d2de69901b1b1", + BUILTININSERTS_FIREFIGHTER_SHPM_LEVEL2_HELMET_ARMOR_TOP = "657ba85ecfcf63c951052da7", + BUILTININSERTS_FORT_KIVER_M_LEVEL3_HELMET_ARMOR_EARS = "657baecbc6f689d3a205b863", + BUILTININSERTS_FORT_KIVER_M_LEVEL3_HELMET_ARMOR_NAPE = "657baeaacfcf63c951052db3", + BUILTININSERTS_FORT_KIVER_M_LEVEL3_HELMET_ARMOR_TOP = "657bae18b7e9ca9a02045c0a", + BUILTININSERTS_GALVION_CAIMAN_LEVEL3_HELMET_ARMOR_NAPE = "657bbb31b30eca9763051183", + BUILTININSERTS_GALVION_CAIMAN_LEVEL3_HELMET_ARMOR_TOP = "657bbad7a1c61ee0c3036323", + BUILTININSERTS_GJEL_LEVEL3_SOFT_ARMOR_BACK = "657326978c1cc6dcd9098b56", + BUILTININSERTS_GJEL_LEVEL3_SOFT_ARMOR_COLLAR = "657326bc5d3a3129fb05f36b", + BUILTININSERTS_GJEL_LEVEL3_SOFT_ARMOR_FRONT = "65732688d9d89ff7ac0d9c4c", + BUILTININSERTS_GJEL_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657326a28c1cc6dcd9098b5a", + BUILTININSERTS_GJEL_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "657326b08c1cc6dcd9098b5e", + BUILTININSERTS_HIGHCOM_STRIKER_ACHHC_LEVEL4_HELMET_ARMOR_NAPE = "657f9605f4c82973640b2358", + BUILTININSERTS_HIGHCOM_STRIKER_ACHHC_LEVEL4_HELMET_ARMOR_TOP = "657f95bff92cd718b701550c", + BUILTININSERTS_INTERCEPTOR_LEVEL2_SOFT_ARMOR_BACK = "6570f35cd67d0309980a7acb", + BUILTININSERTS_INTERCEPTOR_LEVEL2_SOFT_ARMOR_FRONT = "6570f30b0921c914bf07964c", + BUILTININSERTS_INTERCEPTOR_LEVEL2_SOFT_ARMOR_LEFT = "6570f3890b4ae5847f060dad", + BUILTININSERTS_INTERCEPTOR_LEVEL2_SOFT_ARMOR_RIGHT = "6570f3bb0b4ae5847f060db2", + BUILTININSERTS_IOTV_GEN4_A_LEVEL3_SOFT_ARMOR_BACK = "6575c3beefc786cd9101a5ed", + BUILTININSERTS_IOTV_GEN4_A_LEVEL3_SOFT_ARMOR_COLLAR = "6575c3ec52b7f8c76a05ee39", + BUILTININSERTS_IOTV_GEN4_A_LEVEL3_SOFT_ARMOR_FRONT = "6575c3b3dc9932aed601c5f4", + BUILTININSERTS_IOTV_GEN4_A_LEVEL3_SOFT_ARMOR_LEFT_ARM = "6575c3fd52b7f8c76a05ee3d", + BUILTININSERTS_IOTV_GEN4_A_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "6575c3cdc6700bd6b40e8a90", + BUILTININSERTS_IOTV_GEN4_A_LEVEL3_SOFT_ARMOR_RIGHT_ARM = "6575c40c52b7f8c76a05ee41", + BUILTININSERTS_IOTV_GEN4_A_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "6575c3dfdc9932aed601c5f8", + BUILTININSERTS_IOTV_GEN4_F_LEVEL3_SOFT_ARMOR_BACK = "6575c2be52b7f8c76a05ee25", + BUILTININSERTS_IOTV_GEN4_F_LEVEL3_SOFT_ARMOR_COLLAR = "6575c2e4efc786cd9101a5dd", + BUILTININSERTS_IOTV_GEN4_F_LEVEL3_SOFT_ARMOR_FRONT = "6575c2adefc786cd9101a5d9", + BUILTININSERTS_IOTV_GEN4_F_LEVEL3_SOFT_ARMOR_GROIN_BACK = "6575c326c6700bd6b40e8a80", + BUILTININSERTS_IOTV_GEN4_F_LEVEL3_SOFT_ARMOR_GROIN_FRONT = "6575c31b52b7f8c76a05ee35", + BUILTININSERTS_IOTV_GEN4_F_LEVEL3_SOFT_ARMOR_LEFT_ARM = "6575c2f7efc786cd9101a5e1", + BUILTININSERTS_IOTV_GEN4_F_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "6575c2cd52b7f8c76a05ee29", + BUILTININSERTS_IOTV_GEN4_F_LEVEL3_SOFT_ARMOR_RIGHT_ARM = "6575c30352b7f8c76a05ee31", + BUILTININSERTS_IOTV_GEN4_F_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "6575c2d852b7f8c76a05ee2d", + BUILTININSERTS_IOTV_GEN4_M_LEVEL3_SOFT_ARMOR_BACK = "6575c34bc6700bd6b40e8a84", + BUILTININSERTS_IOTV_GEN4_M_LEVEL3_SOFT_ARMOR_COLLAR = "6575c373dc9932aed601c5ec", + BUILTININSERTS_IOTV_GEN4_M_LEVEL3_SOFT_ARMOR_FRONT = "6575c342efc786cd9101a5e5", + BUILTININSERTS_IOTV_GEN4_M_LEVEL3_SOFT_ARMOR_GROIN_BACK = "6575c390efc786cd9101a5e9", + BUILTININSERTS_IOTV_GEN4_M_LEVEL3_SOFT_ARMOR_GROIN_FRONT = "6575c385dc9932aed601c5f0", + BUILTININSERTS_IOTV_GEN4_M_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "6575c35bc6700bd6b40e8a88", + BUILTININSERTS_IOTV_GEN4_M_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "6575c366c6700bd6b40e8a8c", + BUILTININSERTS_KIRASAN_LEVEL2_SOFT_ARMOR_BACK = "65705c3c14f2ed6d7d0b7738", + BUILTININSERTS_KIRASAN_LEVEL2_SOFT_ARMOR_COLLAR = "65705cea4916448ae1050897", + BUILTININSERTS_KIRASAN_LEVEL2_SOFT_ARMOR_FRONT = "65704de13e7bba58ea0285c8", + BUILTININSERTS_KIRASAN_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65705c777260e1139e091408", + BUILTININSERTS_KIRASAN_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "65705cb314f2ed6d7d0b773c", + BUILTININSERTS_KOLPAK_1S_4ML_LEVEL2_HELMET_ARMOR_EARS = "657ba57af58ba5a62501079e", + BUILTININSERTS_KOLPAK_1S_4ML_LEVEL2_HELMET_ARMOR_NAPE = "657ba5439ba22f103e08139f", + BUILTININSERTS_KOLPAK_1S_4ML_LEVEL2_HELMET_ARMOR_TOP = "657ba50c23918923cb0df56c", + BUILTININSERTS_KORA_KULON_LEVEL3_SOFT_ARMOR_BACK = "657049d23425b19bbc0502f0", + BUILTININSERTS_KORA_KULON_LEVEL3_SOFT_ARMOR_FRONT = "6570495b45d573133d0d6adb", + BUILTININSERTS_KORUNDVM_LEVEL2_SOFT_ARMOR_BACK = "65731b4fcea9255e2102360e", + BUILTININSERTS_KORUNDVM_LEVEL2_SOFT_ARMOR_COLLAR = "65731b666e709cddd001ec43", + BUILTININSERTS_KORUNDVM_LEVEL2_SOFT_ARMOR_FRONT = "65731b46cea9255e2102360a", + BUILTININSERTS_KORUNDVM_LEVEL2_SOFT_ARMOR_GROIN_BACK = "65731b6b6042b0f210020ef6", + BUILTININSERTS_KORUNDVM_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "65731b716e709cddd001ec47", + BUILTININSERTS_KORUNDVM_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65731b576e709cddd001ec3f", + BUILTININSERTS_KORUNDVM_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "65731b60ff6dc44a7d068c4a", + BUILTININSERTS_LEVEL2_SOFT_ARMOR_LEFT_ARM = "654a8b60f414fcea4004d793", + BUILTININSERTS_LEVEL2_SOFT_ARMOR_PLATE_BACK = "655751db58aa1b6dbd0cc295", + BUILTININSERTS_LEVEL2_SOFT_ARMOR_PLATE_FRONT = "6557519ac9b1d9bdcb0777e1", + BUILTININSERTS_LEVEL2_SOFT_ARMOR_RIGHT_ARM = "654a8ba90337d53f9102c2b2", + BUILTININSERTS_LEVEL3_SOFT_ARMOR_BACK = "64ad2d8d7e2fcecf0305533f", + BUILTININSERTS_LEVEL3_SOFT_ARMOR_COLLAR = "64ad2dd30b9840e4c80c2489", + BUILTININSERTS_LEVEL3_SOFT_ARMOR_FRONT = "64ad2dac6f9247c2f4012439", + BUILTININSERTS_LEVEL3_SOFT_ARMOR_LEFT_ARM = "64afee8e9f589807e30dc68a", + BUILTININSERTS_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "64ad2dba0b9840e4c80c2485", + BUILTININSERTS_LEVEL3_SOFT_ARMOR_RIGHT_ARM = "64afeecb977493a0ee026213", + BUILTININSERTS_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "64ad2dc66f9247c2f401243d", + BUILTININSERTS_LEVEL3_SOFT_ARMOR_STOMACH = "64afef49977493a0ee026217", + BUILTININSERTS_LSHZ5_VULKAN5_LEVEL6_HELMET_ARMOR_EARS = "657bbefeb30eca9763051189", + BUILTININSERTS_LSHZ5_VULKAN5_LEVEL6_HELMET_ARMOR_NAPE = "657bbed0aab96fccee08be96", + BUILTININSERTS_LSHZ5_VULKAN5_LEVEL6_HELMET_ARMOR_TOP = "657bbe73a1c61ee0c303632b", + BUILTININSERTS_LSHZ_LEVEL3_HELMET_ARMOR_NAPE = "657bb99db30eca976305117f", + BUILTININSERTS_LSHZ_LEVEL3_HELMET_ARMOR_TOP = "657bb92fa1c61ee0c303631f", + BUILTININSERTS_MASKA1SHA_LEVEL4_HELMET_ARMOR_EARS = "657112fa818110db4600aa6b", + BUILTININSERTS_MASKA1SHA_LEVEL4_HELMET_ARMOR_NAPE = "6571138e818110db4600aa71", + BUILTININSERTS_MASKA1SHA_LEVEL4_HELMET_ARMOR_TOP = "6571133d22996eaf11088200", + BUILTININSERTS_MMAC_LEVEL2_SOFT_ARMOR_BACK = "6572fc8c9a866b80ab07eb5d", + BUILTININSERTS_MMAC_LEVEL2_SOFT_ARMOR_FRONT = "6572fc809a866b80ab07eb59", + BUILTININSERTS_MMAC_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "6572fc989a866b80ab07eb61", + BUILTININSERTS_MMAC_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "6572fca39a866b80ab07eb65", + BUILTININSERTS_MODULE3M_LEVEL2_SOFT_ARMOR_BACK = "65702fe593b7ea9c330f4ce8", + BUILTININSERTS_MODULE3M_LEVEL2_SOFT_ARMOR_FRONT = "65702f87722744627e05cdb8", + BUILTININSERTS_MODULE3M_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "6570305d93b7ea9c330f4ced", + BUILTININSERTS_MODULE3M_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "65703472c9030b928a0a8a78", + BUILTININSERTS_MSA_GALLET_TC800_LEVEL4_HELMET_ARMOR_NAPE = "657f9cb587e11c61f70bfaca", + BUILTININSERTS_MSA_GALLET_TC800_LEVEL4_HELMET_ARMOR_TOP = "657f9c78ada5fadd1f07a58d", + BUILTININSERTS_MSA_TC2001_LEVEL4_HELMET_ARMOR_NAPE = "657f8b05f4c82973640b2348", + BUILTININSERTS_MSA_TC2001_LEVEL4_HELMET_ARMOR_TOP = "657f8a8d7db258e5600fe33d", + BUILTININSERTS_MSA_TC2002_LEVEL4_HELMET_ARMOR_NAPE = "657f8b43f92cd718b70154fb", + BUILTININSERTS_MSA_TC2002_LEVEL4_HELMET_ARMOR_TOP = "657f8b94f92cd718b70154ff", + BUILTININSERTS_NFM_HJELM_LEVEL3_HELMET_ARMOR_NAPE = "657bbcffbbd440df880b2dd5", + BUILTININSERTS_NFM_HJELM_LEVEL3_HELMET_ARMOR_TOP = "657bbcc9a1c61ee0c3036327", + BUILTININSERTS_OPS_CORE_FASTMT_LEVEL4_HELMET_ARMOR_NAPE = "657f8f10f4c82973640b2350", + BUILTININSERTS_OPS_CORE_FASTMT_LEVEL4_HELMET_ARMOR_TOP = "657f8ec5f4c82973640b234c", + BUILTININSERTS_PACA_LEVEL2_SOFT_ARMOR_BACK = "65703fa06584602f7d057a8e", + BUILTININSERTS_PACA_LEVEL2_SOFT_ARMOR_FRONT = "65703d866584602f7d057a8a", + BUILTININSERTS_PACA_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65703fe46a912c8b5c03468b", + BUILTININSERTS_PACA_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "657040374e67e8ec7a0d261c", + BUILTININSERTS_RATNIK_6B47_LEVEL3_HELMET_ARMOR_EARS = "657babc6f58ba5a6250107a2", + BUILTININSERTS_RATNIK_6B47_LEVEL3_HELMET_ARMOR_NAPE = "657bab6ec6f689d3a205b85f", + BUILTININSERTS_RATNIK_6B47_LEVEL3_HELMET_ARMOR_TOP = "657baaf0b7e9ca9a02045c02", + BUILTININSERTS_RBAV_AF_LEVEL2_SOFT_ARMOR_BACK = "6572f1d60103b4a3270332db", + BUILTININSERTS_RBAV_AF_LEVEL2_SOFT_ARMOR_FRONT = "6572f1ca4c8d903cc60c874e", + BUILTININSERTS_RBAV_AF_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "6572f1f7ea457732140ce879", + BUILTININSERTS_RBAV_AF_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "6572f1e10103b4a3270332df", + BUILTININSERTS_RBAV_AF_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "6572f1edea457732140ce875", + BUILTININSERTS_REDUT_M_LEVEL3_SOFT_ARMOR_BACK = "6575dd519e27f4a85e081146", + BUILTININSERTS_REDUT_M_LEVEL3_SOFT_ARMOR_COLLAR = "6575dd769d3a0ddf660b904b", + BUILTININSERTS_REDUT_M_LEVEL3_SOFT_ARMOR_FRONT = "6575dd3e9e27f4a85e081142", + BUILTININSERTS_REDUT_M_LEVEL3_SOFT_ARMOR_GROIN_BACK = "6575dd94945bf78edd04c43c", + BUILTININSERTS_REDUT_M_LEVEL3_SOFT_ARMOR_GROIN_FRONT = "6575dd800546f8b1de093df6", + BUILTININSERTS_REDUT_M_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "6575dd64945bf78edd04c438", + BUILTININSERTS_REDUT_M_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "6575dd6e9d3a0ddf660b9047", + BUILTININSERTS_REDUT_T_LEVEL3_SOFT_ARMOR_BACK = "6575d9b8945bf78edd04c427", + BUILTININSERTS_REDUT_T_LEVEL3_SOFT_ARMOR_COLLAR = "6575d9d8945bf78edd04c42b", + BUILTININSERTS_REDUT_T_LEVEL3_SOFT_ARMOR_FRONT = "6575d9a79e27f4a85e08112d", + BUILTININSERTS_REDUT_T_LEVEL3_SOFT_ARMOR_GROIN_BACK = "6575d9f816c2762fba00588d", + BUILTININSERTS_REDUT_T_LEVEL3_SOFT_ARMOR_GROIN_FRONT = "6575d9e7945bf78edd04c42f", + BUILTININSERTS_REDUT_T_LEVEL3_SOFT_ARMOR_LEFT_ARM = "6575da07945bf78edd04c433", + BUILTININSERTS_REDUT_T_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "6575d9c40546f8b1de093dee", + BUILTININSERTS_REDUT_T_LEVEL3_SOFT_ARMOR_RIGHT_ARM = "6575da159e27f4a85e081131", + BUILTININSERTS_REDUT_T_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "6575d9cf0546f8b1de093df2", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_EARS = "65711b706d197c216005b31c", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_EYES = "65711b9b65daf6aa960c9b1b", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_JAW = "65711bc79eb8c145180dbba1", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_NAPE = "65711b489eb8c145180dbb9d", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_TOP = "65711b07a330b8c9060f7b01", + BUILTININSERTS_RYS_T_LEVEL5_HELMET_ARMOR_EARS = "657bc2e7b30eca976305118d", + BUILTININSERTS_RYS_T_LEVEL5_HELMET_ARMOR_NAPE = "657bc2c5a1c61ee0c3036333", + BUILTININSERTS_RYS_T_LEVEL5_HELMET_ARMOR_TOP = "657bc285aab96fccee08bea3", + BUILTININSERTS_SFERAS_SSSH94_LEVEL3_HELMET_ARMOR_EARS = "657bb7d7b30eca9763051176", + BUILTININSERTS_SFERAS_SSSH94_LEVEL3_HELMET_ARMOR_NAPE = "657bb79ba1c61ee0c303631a", + BUILTININSERTS_SFERAS_SSSH94_LEVEL3_HELMET_ARMOR_TOP = "657bb70486c7f9ef7a009936", + BUILTININSERTS_SHLEMOFON_TSH_4ML_LEVEL1_HELMET_ARMOR_EARS = "657ba18923918923cb0df568", + BUILTININSERTS_SHLEMOFON_TSH_4ML_LEVEL1_HELMET_ARMOR_NAPE = "657ba145e57570b7f80a17ff", + BUILTININSERTS_SHLEMOFON_TSH_4ML_LEVEL1_HELMET_ARMOR_TOP = "657ba096e57570b7f80a17fb", + BUILTININSERTS_SLICK_BLACK_LEVEL3_SOFT_ARMOR_BACK = "6575e72660703324250610c7", + BUILTININSERTS_SLICK_BLACK_LEVEL3_SOFT_ARMOR_FRONT = "6575e71760703324250610c3", + BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_EARS = "657119fea330b8c9060f7afc", + BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_NAPE = "657119d49eb8c145180dbb95", + BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_TOP = "6571199565daf6aa960c9b10", + BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_BACK = "6572eb1b04ee6483ef039882", + BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_FRONT = "6572eb0e55beba16bc04079f", + BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "6572eb865b5eac12f10a03ee", + BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "6572eb3004ee6483ef039886", + BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "6572eb3b04ee6483ef03988a", + BUILTININSERTS_TACTEC_LEVEL3_SOFT_ARMOR_BACK = "6575bca0dc9932aed601c5d7", + BUILTININSERTS_TACTEC_LEVEL3_SOFT_ARMOR_FRONT = "6575bc88c6700bd6b40e8a57", + BUILTININSERTS_TAC_KEK_FAST_MT_LEVEL1_HELMET_ARMOR_NAPE = "657ba34b9ba22f103e08139b", + BUILTININSERTS_TAC_KEK_FAST_MT_LEVEL1_HELMET_ARMOR_TOP = "657ba2eef58ba5a625010798", + BUILTININSERTS_THORCRV_LEVEL3_SOFT_ARMOR_BACK = "6572e52f73c0eabb700109a0", + BUILTININSERTS_THORCRV_LEVEL3_SOFT_ARMOR_FRONT = "6572e5221b5bc1185508c24f", + BUILTININSERTS_THORCRV_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "6572e53c73c0eabb700109a4", + BUILTININSERTS_THORCRV_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "6572e54873c0eabb700109a8", + BUILTININSERTS_THORINTCAR_LEVEL3_SOFT_ARMOR_BACK = "6575d56b16c2762fba005818", + BUILTININSERTS_THORINTCAR_LEVEL3_SOFT_ARMOR_COLLAR = "6575d598b15fef3dd4051678", + BUILTININSERTS_THORINTCAR_LEVEL3_SOFT_ARMOR_FRONT = "6575d561b15fef3dd4051670", + BUILTININSERTS_THORINTCAR_LEVEL3_SOFT_ARMOR_GROIN_FRONT = "6575d5a616c2762fba005820", + BUILTININSERTS_THORINTCAR_LEVEL3_SOFT_ARMOR_LEFT_ARM = "6575d5b316c2762fba005824", + BUILTININSERTS_THORINTCAR_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "6575d57a16c2762fba00581c", + BUILTININSERTS_THORINTCAR_LEVEL3_SOFT_ARMOR_RIGHT_ARM = "6575d5bd16c2762fba005828", + BUILTININSERTS_THORINTCAR_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "6575d589b15fef3dd4051674", + BUILTININSERTS_TROOPER_LEVEL3_SOFT_ARMOR_BACK = "6570e0610b57c03ec90b96ef", + BUILTININSERTS_TROOPER_LEVEL3_SOFT_ARMOR_FRONT = "6570e025615f54368b04fcb0", + BUILTININSERTS_TV110_LEVEL2_SOFT_ARMOR_BACK = "6570df9c615f54368b04fca9", + BUILTININSERTS_TV110_LEVEL2_SOFT_ARMOR_FRONT = "6570df294cc0d2ab1e05ed74", + BUILTININSERTS_TV115_LEVEL2_SOFT_ARMOR_BACK = "6570658a89fd4926380b7346", + BUILTININSERTS_TV115_LEVEL2_SOFT_ARMOR_FRONT = "6570653e89fd4926380b733e", + BUILTININSERTS_ULACH_LEVEL4_HELMET_ARMOR_EARS = "657112ce22996eaf110881fb", + BUILTININSERTS_ULACH_LEVEL4_HELMET_ARMOR_NAPE = "657112a4818110db4600aa66", + BUILTININSERTS_ULACH_LEVEL4_HELMET_ARMOR_TOP = "657112234269e9a568089eac", + BUILTININSERTS_UNTAR_LEVEL3_HELMET_ARMOR_EARS = "654a9189bcc67a392b056c79", + BUILTININSERTS_UNTAR_LEVEL3_HELMET_ARMOR_NAPE = "654a91068e1ce698150fd1e2", + BUILTININSERTS_UNTAR_LEVEL3_HELMET_ARMOR_TOP = "654a90aff4f81a421b0a7c86", + BUILTININSERTS_UNTAR_LEVEL3_SOFT_ARMOR_BACK = "657045741bd9beedc40b7299", + BUILTININSERTS_UNTAR_LEVEL3_SOFT_ARMOR_FRONT = "657044e971369562b300ce9b", + BUILTININSERTS_UNTAR_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657045b97e80617cee095bda", + BUILTININSERTS_UNTAR_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "6570460471369562b300ce9f", + BUILTININSERTS_ZHUK3_LEVEL2_SOFT_ARMOR_BACK = "6571dbda88ead79fcf091d75", + BUILTININSERTS_ZHUK3_LEVEL2_SOFT_ARMOR_COLLAR = "6571dbef88ead79fcf091d79", + BUILTININSERTS_ZHUK3_LEVEL2_SOFT_ARMOR_FRONT = "6571dbd388ead79fcf091d71", + BUILTININSERTS_ZHUK3_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "6571dbe07c02ae206002502e", + BUILTININSERTS_ZHUK3_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "6571dbeaee8ec43d520cf89e", + BUILTININSERTS_ZHUK6_LEVEL3_SOFT_ARMOR_BACK = "657642b0e6d5dd75f40688a5", + BUILTININSERTS_ZHUK6_LEVEL3_SOFT_ARMOR_COLLAR = "657643a220cc24d17102b14c", + BUILTININSERTS_ZHUK6_LEVEL3_SOFT_ARMOR_FRONT = "65764275d8537eb26a0355e9", + BUILTININSERTS_ZHUK6_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "6576434820cc24d17102b148", + BUILTININSERTS_ZHUK6_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "657643732bc38ef78e076477", + BUILTININSERTS_ZSH_1_2M_LEVEL4_HELMET_ARMOR_EARS = "657f92e7f4c82973640b2354", + BUILTININSERTS_ZSH_1_2M_LEVEL4_HELMET_ARMOR_NAPE = "657f92acada5fadd1f07a57e", + BUILTININSERTS_ZSH_1_2M_LEVEL4_HELMET_ARMOR_TOP = "657f925dada5fadd1f07a57a", + CHARGE_AI_AXMC_338_LM_BOLT_ASSEMBLY = "62811cd7308cb521f87a8f99", + CHARGE_AK_CSS_KNURLED_CHARGING_HANDLE = "6130ca3fd92c473c77020dbd", + CHARGE_AK_ZENIT_RP1_CHARGING_HANDLE = "5648ac824bdc2ded0b8b457d", + CHARGE_AR10_KAC_AMBIDEXTROUS_CHARGING_HANDLE = "5df8e085bb49d91fb446d6a8", + CHARGE_AR10_KAC_CHARGING_HANDLE = "5df8e053bb49d91fb446d6a6", + CHARGE_AR15_ADAR_215_CHARGING_HANDLE = "5c0faf68d174af02a96260b8", + CHARGE_AR15_BADGER_ORDNANCE_TACTICAL_CHARGING_HANDLE_LATCH = "56ea7165d2720b6e518b4583", + CHARGE_AR15_COLT_CHARGING_HANDLE = "55d44fd14bdc2d962f8b456e", + CHARGE_AR15_DANIEL_DEFENSE_GRIPNRIP_CHARGING_HANDLE = "651bf5617b3b552ef6712cb7", + CHARGE_AR15_GEISSELE_ACH_CHARGING_HANDLE_DDC = "5ea16d4d5aad6446a939753d", + CHARGE_AR15_HK_EXTENDED_LATCH_CHARGING_HANDLE = "5bb20dbcd4351e44f824c04e", + CHARGE_AR15_MASP_INDUSTRIES_AMBIDEXTROUS_BATTLE_CHARGING_HANDLE = "6033749e88382f4fab3fd2c5", + CHARGE_AR15_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE = "5b2240bf5acfc40dc528af69", + CHARGE_AR15_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_GREY = "5d44334ba4b9362b346d1948", + CHARGE_AR15_RAINIER_ARMS_AVALANCHE_MOD2_CHARGING_HANDLE = "5f633ff5c444ce7e3c30a006", + CHARGE_BENELLI_M3_SUPER_90_CHARGING_HANDLE = "625ec45bb14d7326ac20f572", + CHARGE_FN_P90_CHARGING_HANDLE = "5cc6ea78e4a949000e1ea3c1", + CHARGE_FN_P90_KM_THE_HANDLER_CHARGING_HANDLE = "5cc6ea85e4a949000e1ea3c3", + CHARGE_FN_SCAR_CHARGING_HANDLE = "6181688c6c780c1e710c9b04", + CHARGE_HK417_E1_EXTENDED_CHARGING_HANDLE = "61702d8a67085e45ef140b24", + CHARGE_HK_MP5K_COCKING_HANDLE = "5d2f2d5748f03572ec0c0139", + CHARGE_HK_MP5_COCKING_HANDLE = "5926c32286f774616e42de99", + CHARGE_MCX_CHARGING_HANDLE = "5fbcc640016cce60e8341acc", + CHARGE_MCX_SPEAR_CHARGING_HANDLE = "6529109524cbe3c74a05e5b7", + CHARGE_MK47_AMBIDEXTROUS_CHARGING_HANDLE = "606587bd6d0bd7580617bacc", + CHARGE_MP9_CHARGING_HANDLE = "5de922d4b11454561e39239f", + CHARGE_MPX_DOUBLE_LATCH_CHARGING_HANDLE = "58949edd86f77409483e16a9", + CHARGE_MPX_GEISSELE_SCH_CHARGING_HANDLE = "5c5db6b32e221600102611a0", + CHARGE_MPX_SINGLE_LATCH_CHARGING_HANDLE = "58949fac86f77409483e16aa", + CHARGE_STEYR_AUG_A1_CHARGING_HANDLE = "62e7c880f68e7a0676050c7c", + CHARGE_STEYR_AUG_A3_CHARGING_HANDLE = "62ebbc53e3c1e1ec7c02c44f", + COLLIMATOR_AIMPOINT_COMPM4_REFLEX_SIGHT = "5c7d55de2e221644f31bff68", + COLLIMATOR_AIMPOINT_PRO_REFLEX_SIGHT = "61659f79d92c473c770213ee", + COLLIMATOR_AXION_KOBRA_EKP1S03_REFLEX_SIGHT_DOVETAIL = "6544d4187c5457729210d277", + COLLIMATOR_AXION_KOBRA_EKP802_REFLEX_SIGHT_DOVETAIL = "5947db3f86f77447880cf76f", + COLLIMATOR_AXION_KOBRA_EKP818_REFLEX_SIGHT = "591c4efa86f7741030027726", + COLLIMATOR_BELOMO_PKAA_DOVETAIL_REFLEX_SIGHT = "6113d6c3290d254f5e6b27db", + COLLIMATOR_ELCAN_SPECTER_HCO_HOLOGRAPHIC_SIGHT = "64785e7c19d732620e045e15", + COLLIMATOR_EOTECH_553_HOLOGRAPHIC_SIGHT = "570fd6c2d2720bc6458b457f", + COLLIMATOR_EOTECH_EXPS3_HOLOGRAPHIC_SIGHT_TAN = "558022b54bdc2dac148b458d", + COLLIMATOR_EOTECH_HHS1_HYBRID_SIGHT = "5c07dd120db834001c39092d", + COLLIMATOR_EOTECH_HHS1_HYBRID_SIGHT_TAN = "5c0a2cec0db834001b7ce47d", + COLLIMATOR_EOTECH_XPS30_HOLOGRAPHIC_SIGHT = "58491f3324597764bc48fa02", + COLLIMATOR_EOTECH_XPS32_HOLOGRAPHIC_SIGHT = "584924ec24597768f12ae244", + COLLIMATOR_FN_P90_RING_SIGHT_REFLEX_SIGHT = "5cebec38d7f00c00110a652a", + COLLIMATOR_HENSOLDT_RV_RED_DOT_SIGHT = "622efbcb99f4ea1a4d6c9a15", + COLLIMATOR_HOLOSUN_HS401G5_REFLEX_SIGHT = "5b30b0dc5acfc400153b7124", + COLLIMATOR_LEAPERS_UTG_REFLEX_SIGHT = "6165ac8c290d254f5e6b2f6c", + COLLIMATOR_MILKOR_M2A1_GRENADE_LAUNCHER_REFLEX_SIGHT = "6284bd5f95250a29bc628a30", + COLLIMATOR_NPZ_PK1_OBZOR_DOVETAIL_REFLEX_SIGHT = "618a5d5852ecee1505530b2a", + COLLIMATOR_OKP7_REFLEX_SIGHT = "570fd79bd2720bc7458b4583", + COLLIMATOR_OKP7_REFLEX_SIGHT_DOVETAIL = "57486e672459770abd687134", + COLLIMATOR_SIG_SAUER_ROMEO7_1X30_REFLEX_SIGHT_PROTOTYPE = "6477772ea8a38bb2050ed4db", + COLLIMATOR_SIG_SAUER_ROMEO8T_REFLEX_SIGHT = "60a23797a37c940de7062d02", + COLLIMATOR_SR2M_KPSR2_REFLEX_SIGHT = "62ff9920fe938a24c90c10d2", + COLLIMATOR_TRIJICON_SRS02_REFLEX_SIGHT = "5d2da1e948f035477b1ce2ba", + COLLIMATOR_VALDAY_KRECHET_REFLEX_SIGHT = "609a63b6e2ff132951242d09", + COLLIMATOR_VALDAY_PK120_1P87_HOLOGRAPHIC_SIGHT = "5c0505e00db834001b735073", + COLLIMATOR_VOMZ_PILAD_P1X42_WEAVER_REFLEX_SIGHT = "584984812459776a704a82a6", + COLLIMATOR_VOMZ_PILAD_TARGETRING_REFLEX_SIGHT = "609b9e31506cf869cf3eaf41", + COLLIMATOR_VORTEX_RAZOR_AMG_UH1_HOLOGRAPHIC_SIGHT = "59f9d81586f7744c7506ee62", + COLLIMATOR_WALTHER_MRS_REFLEX_SIGHT = "570fd721d2720bc5458b4596", + COLLIMATOR_WILCOX_BOSS_XE_REFLEX_SIGHT = "655f13e0a246670fb0373245", + COMPACTCOLLIMATOR_AIMPOINT_ACRO_P1_REFLEX_SIGHT = "616442e4faa1272e43152193", + COMPACTCOLLIMATOR_AIMPOINT_MICRO_H2_REFLEX_SIGHT = "61657230d92c473c770213d7", + COMPACTCOLLIMATOR_AIMPOINT_MICRO_T1_REFLEX_SIGHT = "58d399e486f77442e0016fe7", + COMPACTCOLLIMATOR_BELOMO_PK06_REFLEX_SIGHT = "57ae0171245977343c27bfcf", + COMPACTCOLLIMATOR_BURRIS_FASTFIRE_3_REFLEX_SIGHT = "577d141e24597739c5255e01", + COMPACTCOLLIMATOR_LEUPOLD_DELTAPOINT_REFLEX_SIGHT = "58d268fc86f774111273f8c2", + COMPACTCOLLIMATOR_SIG_SAUER_ROMEO4_REFLEX_SIGHT = "5b3116595acfc40019476364", + COMPACTCOLLIMATOR_TRIJICON_RMR_REFLEX_SIGHT = "5a32aa8bc4a2826c6e06d737", + COMPASS_EYE_MK2_PROFESSIONAL_HANDHELD = "5f4f9eb969cdc30ff33f09db", + CONTAINER_AMMUNITION_CASE = "5aafbde786f774389d0cbc0f", + CONTAINER_DOCUMENTS_CASE = "590c60fc86f77412b13fddcf", + CONTAINER_DOGTAG_CASE = "5c093e3486f77430cb02e593", + CONTAINER_GINGY_KEYCHAIN = "62a09d3bcf4a99369e262447", + CONTAINER_GRENADE_CASE = "5e2af55f86f7746d4159f07c", + CONTAINER_INJECTOR_CASE = "619cbf7d23893217ec30b689", + CONTAINER_ITEM_CASE = "59fb042886f7746c5005a7b2", + CONTAINER_KEYCARD_HOLDER_CASE = "619cbf9e0a7c3a1a2731940a", + CONTAINER_KEY_TOOL = "59fafd4b86f7745ca07e1232", + CONTAINER_LUCKY_SCAV_JUNK_BOX = "5b7c710788a4506dec015957", + CONTAINER_MAGAZINE_CASE = "5c127c4486f7745625356c13", + CONTAINER_MEDICINE_CASE = "5aafbcd986f7745e590fff23", + CONTAINER_MONEY_CASE = "59fb016586f7746d0d4b423a", + CONTAINER_MR_HOLODILNICK_THERMAL_BAG = "5c093db286f7740a1b2617e3", + CONTAINER_SICC = "5d235bb686f77443f4331278", + CONTAINER_SIMPLE_WALLET = "5783c43d2459774bbe137486", + CONTAINER_THICC_ITEM_CASE = "5c0a840b86f7742ffa4f2482", + CONTAINER_THICC_WEAPON_CASE = "5b6d9ce188a4501afc1b2b25", + CONTAINER_WEAPON_CASE = "59fb023c86f7746d0d4b423c", + CONTAINER_WZ_WALLET = "60b0f6c058e0b0481a09ad11", + CULTISTAMULET_SACRED_AMULET = "64d0b40fbe2eed70e254e2d4", + DRINK_AQUAMARI_WATER_BOTTLE_WITH_FILTER = "5c0fa877d174af02a012e1cf", + DRINK_BOTTLE_OF_DAN_JACKIEL_WHISKEY = "5d403f9186f7743cac3f229b", + DRINK_BOTTLE_OF_FIERCE_HATCHLING_MOONSHINE = "5d1b376e86f774252519444e", + DRINK_BOTTLE_OF_NORVINSKIY_YADRENIY_PREMIUM_KVASS_06L = "5e8f3423fd7471236e6e3b64", + DRINK_BOTTLE_OF_PEVKO_LIGHT_BEER = "62a09f32621468534a797acb", + DRINK_BOTTLE_OF_TARKOVSKAYA_VODKA = "5d40407c86f774318526545a", + DRINK_BOTTLE_OF_TARKOVSKAYA_VODKA_BAD = "614451b71e5874611e2c7ae5", + DRINK_BOTTLE_OF_WATER_06L = "5448fee04bdc2dbc018b4567", + DRINK_CANISTER_WITH_PURIFIED_WATER = "5d1b33a686f7742523398398", + DRINK_CAN_OF_HOT_ROD_ENERGY = "5751496424597720a27126da", + DRINK_CAN_OF_ICE_GREEN_TEA = "575062b524597720a31c09a1", + DRINK_CAN_OF_MAX_ENERGY_ENERGY = "5751435d24597720a27126d1", + DRINK_CAN_OF_RATCOLA_SODA = "60b0f93284c20f0feb453da7", + DRINK_CAN_OF_TARCOLA_SODA = "57514643245977207f2c2d09", + DRINK_EMERGENCY_WATER_RATION = "60098b1705871270cd5352a1", + DRINK_PACK_OF_APPLE_JUICE = "57513f07245977207e26a311", + DRINK_PACK_OF_GRAND_JUICE = "57513f9324597720a7128161", + DRINK_PACK_OF_MILK = "575146b724597720a27126d5", + DRINK_PACK_OF_RUSSIAN_ARMY_PINEAPPLE_JUICE = "544fb62a4bdc2dfb738b4568", + DRINK_PACK_OF_VITA_JUICE = "57513fcc24597720a31c09a6", + DRUGS_ANALGIN_PAINKILLERS = "544fb37f4bdc2dee738b4567", + DRUGS_AUGMENTIN_ANTIBIOTIC_PILLS = "590c695186f7741e566b64a2", + DRUGS_GOLDEN_STAR_BALM = "5751a89d24597722aa0e8db0", + DRUGS_IBUPROFEN_PAINKILLERS = "5af0548586f7743a532b7e99", + DRUGS_MORPHINE_INJECTOR = "544fb3f34bdc2d03748b456a", + DRUGS_VASELINE_BALM = "5755383e24597772cb798966", + FACECOVER_ATOMIC_DEFENSE_CQCM_BALLISTIC_MASK_BLACK = "657089638db3adca1009f4ca", + FACECOVER_BADDIES_RED_BEARD = "62a09dd4621468534a797ac7", + FACECOVER_BALACLAVA = "572b7f1624597762ae139822", + FACECOVER_BALACLAVA_DEV = "58ac60eb86f77401897560ff", + FACECOVER_BIG_PIPES_SMOKING_PIPE = "62a61bbf8ec41a51b34758d2", + FACECOVER_COLD_FEAR_INFRARED_BALACLAVA = "5ab8f39486f7745cd93a1cca", + FACECOVER_DEADLY_SKULL_MASK = "5b432b6c5acfc4001a599bf0", + FACECOVER_DEATH_KNIGHT_MASK = "62963c18dbc8ab5f0d382d0b", + FACECOVER_DEATH_SHADOW_LIGHTWEIGHT_ARMORED_MASK = "6570aead4d84f81fd002a033", + FACECOVER_FACELESS_MASK = "6176a48d732a664031271438", + FACECOVER_FAKE_MUSTACHE = "5bd073a586f7747e6f135799", + FACECOVER_FAKE_WHITE_BEARD = "5c1a1e3f2e221602b66cc4c2", + FACECOVER_GHOST_BALACLAVA = "5ab8f4ff86f77431c60d91ba", + FACECOVER_GHOST_HALFMASK = "6571bde39837cc51b800c212", + FACECOVER_GHOUL_MASK = "6176a40f0b8c0312ac75a3d3", + FACECOVER_GLORIOUS_E_LIGHTWEIGHT_ARMORED_MASK = "62a09e08de7ac81993580532", + FACECOVER_GP5_GAS_MASK = "5b432c305acfc40019478128", + FACECOVER_GP7_GAS_MASK = "60363c0c92ec1c31037959f5", + FACECOVER_HOCKEY_PLAYER_MASK_BRAWLER = "62a5c333ec21e50cad3b5dc6", + FACECOVER_HOCKEY_PLAYER_MASK_CAPTAIN = "62a5c2c98ec41a51b34739c0", + FACECOVER_HOCKEY_PLAYER_MASK_QUIET = "62a5c41e8ec41a51b34739c3", + FACECOVER_JASON_MASK = "5bd071d786f7747e707b93a3", + FACECOVER_LOWER_HALFMASK = "572b7fa524597762b747ce82", + FACECOVER_MISHA_MAYOROV_MASK = "5bd0716d86f774171822ef4b", + FACECOVER_MOMEX_BALACLAVA = "5b432f3d5acfc4704b4a1dfb", + FACECOVER_NEOPRENE_MASK = "5b4326435acfc433000ed01d", + FACECOVER_PESTILY_PLAGUE_MASK = "5e54f79686f7744022011103", + FACECOVER_RESPIRATOR = "59e7715586f7742ee5789605", + FACECOVER_SHATTERED_LIGHTWEIGHT_ARMORED_MASK = "5b432b2f5acfc4771e1c6622", + FACECOVER_SHEMAGH_GREEN = "5ab8f85d86f7745cd93a1cf5", + FACECOVER_SHEMAGH_TAN = "5b4325355acfc40019478126", + FACECOVER_SHROUD_HALFMASK = "5e54f76986f7740366043752", + FACECOVER_SLENDER_MASK = "5bd06f5d86f77427101ad47c", + FACECOVER_SMOKE_BALACLAVA = "5fd8d28367cb5e077335170f", + FACECOVER_SPOOKY_SKULL_MASK = "635267ab3c89e2112001f826", + FACECOVER_TAGILLAS_WELDING_MASK_GORILLA = "60a7ad3a0c5cb24b0134664a", + FACECOVER_TAGILLAS_WELDING_MASK_UBEY = "60a7ad2a2198820d95707a2e", + FACECOVER_TWITCH_RIVALS_2020_HALFMASK = "5e71fad086f77422443d4604", + FACECOVER_TWITCH_RIVALS_2020_MASK = "5e71f6be86f77429f2683c44", + FACECOVER_TWITCH_RIVALS_2021_BALACLAVA = "607f201b3c672b3b3a24a800", + FACECOVER_VENGEFUL_ZRYACHIYS_BALACLAVA = "6530e8587cbfc1e309011e37", + FACECOVER_ZRYACHIYS_BALACLAVA = "63626d904aa74b8fe30ab426", + FLARE_ROP30_REACTIVE_FLARE_CARTRIDGE_WHITE = "62178be9d0050232da3485d9", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_GREEN = "6217726288ed9f0845317459", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_RED = "62178c4d4ecf221597654e3d", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_YELLOW = "624c0b3340357b5f566e8766", + FLASHHIDER_AAC_SCARSD_51T_762X51_FLASH_HIDER = "618178aa1cb55961fa0fdc80", + FLASHHIDER_AI_338_LM_TACTICAL_MUZZLE_BRAKE = "62812081d23f207deb0ab216", + FLASHHIDER_AK101_556X45_MUZZLE_BRAKECOMPENSATOR = "5ac72e615acfc43f67248aa0", + FLASHHIDER_AK102_556X45_MUZZLE_BRAKECOMPENSATOR_6P44_020 = "5ac72e725acfc400180ae701", + FLASHHIDER_AK103_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e7d5acfc40016339a02", + FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR_6P46_020 = "5ac72e895acfc43b321d4bd5", + FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR_6P44_020 = "5ac72e945acfc43f3b691116", + FLASHHIDER_AK12_545X39_MUZZLE_BRAKE = "649ec2af961514b22506b10f", + FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5ac7655e5acfc40016339a19", + FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5649aa744bdc2ded0b8b457e", + FLASHHIDER_AK74_PWS_CQB_74_545X39_MUZZLE_BRAKE = "5943eeeb86f77412d6384f6b", + FLASHHIDER_AK74_SRVV_MBR_JET_545X39_MUZZLE_BRAKE = "5cc9a96cd7f00c011c04e04a", + FLASHHIDER_AK74_THREAD_TYPE_JMAC_CUSTOMS_RRD4C_MULTICALIBER_MUZZLE_BRAKE = "5f633f791b231926f2329f13", + FLASHHIDER_AKML_SYSTEM_762X39_FLASH_HIDER = "5a0d716f1526d8000d26b1e2", + FLASHHIDER_AKM_762X39_MUZZLE_BRAKECOMPENSATOR_6P1_014 = "59d64fc686f774171b243fe2", + FLASHHIDER_AKM_THREAD_TYPE_JMAC_CUSTOMS_RRD4C_762X39_MUZZLE_BRAKE = "5f633f68f5750b524b45f112", + FLASHHIDER_AKS74U_545X39_MUZZLE_BRAKE_6P26_020 = "57dc324a24597759501edc20", + FLASHHIDER_AK_HEXAGON_REACTOR_545X39_MUZZLE_BRAKE = "615d8f5dd92c473c770212ef", + FLASHHIDER_AK_LANTAC_DRAKON_762X39_MUZZLE_BRAKE = "5c878ebb2e2216001219d48a", + FLASHHIDER_AK_SPIKES_TACTICAL_DYNACOMP_762X39_MUZZLE_BRAKECOMPENSATOR = "5a9ea27ca2750c00137fa672", + FLASHHIDER_AK_SRVV_762X39_MUZZLE_BRAKECOMPENSATOR = "5cc9ad73d7f00c000e2579d4", + FLASHHIDER_AK_VECTOR_VR05T_762X39_MUZZLE_BRAKE = "64942bfc6ee699f6890dff95", + FLASHHIDER_AK_VENOM_TACTICAL_ANTIDOTE_762X39_MUZZLE_BRAKECOMPENSATOR = "5c7951452e221644f31bfd5c", + FLASHHIDER_AK_ZENIT_DTK1_762X39545X39_MUZZLE_BRAKECOMPENSATOR = "5649ab884bdc2ded0b8b457f", + FLASHHIDER_AR10_2A_ARMANENT_X3_762X51_COMPENSATOR = "5b7d693d5acfc43bca706a3d", + FLASHHIDER_AR10_AAC_BLACKOUT_51T_762X51_FLASH_HIDER = "5a34fd2bc4a282329a73b4c5", + FLASHHIDER_AR10_CMMG_SV_BRAKE_762X51_MUZZLE_BRAKE = "6065c6e7132d4d12c81fd8e1", + FLASHHIDER_AR10_DANIEL_DEFENSE_WAVE_762X51_MUZZLE_BRAKE = "5d1f819086f7744b355c219b", + FLASHHIDER_AR10_DEAD_AIR_KEYMOUNT_762X51_MUZZLE_BRAKE = "628a66b41d5e41750e314f34", + FLASHHIDER_AR10_FORTIS_RED_BRAKE_762X51_MUZZLE_BRAKE = "5d026791d7ad1a04a067ea63", + FLASHHIDER_AR10_KAC_QDC_762X51_FLASH_SUPPRESSOR_KIT = "5dfa3cd1b33c0951220c079b", + FLASHHIDER_AR10_KAC_QDC_762X51_MUZZLE_BRAKE_KIT = "6130c43c67085e45ef1405a1", + FLASHHIDER_AR10_KEENO_ARMS_SHREWD_762X51_MUZZLE_BRAKE = "5cdd7685d7f00c000f260ed2", + FLASHHIDER_AR10_LANTAC_DRAGON_762X51_MUZZLE_BRAKECOMPENSATOR = "5c878e9d2e2216000f201903", + FLASHHIDER_AR10_NORDIC_COMPONENTS_CORVETTE_762X51_COMPENSATOR = "5d02677ad7ad1a04a15c0f95", + FLASHHIDER_AR10_ODIN_WORKS_ATLAS7_762X51_MUZZLE_BRAKE = "5bbdb8bdd4351e4502011460", + FLASHHIDER_AR10_PRECISION_ARMANENT_M11_SEVEREDUTY_762X51_MUZZLE_BRAKE = "5cdd7693d7f00c0010373aa5", + FLASHHIDER_AR10_SUREFIRE_PROCOMP_762X51_MUZZLE_BRAKE = "607ffb988900dc2d9a55b6e4", + FLASHHIDER_AR10_SUREFIRE_WARDEN_762X51_BLAST_REGULATOR = "615d8eb350224f204c1da1cf", + FLASHHIDER_AR10_TAA_ZK38_762X51_MUZZLE_BRAKE = "612e0e3c290d254f5e6b291d", + FLASHHIDER_AR10_THUNDER_BEAST_ARMS_30CB_762X51_MUZZLE_BRAKE = "5d443f8fa4b93678dd4a01aa", + FLASHHIDER_AR15_AAC_BLACKOUT_51T_556X45_FLASH_HIDER = "5c7e5f112e221600106f4ede", + FLASHHIDER_AR15_ADAR_215_556X45_FLASH_HIDER = "5c0fafb6d174af02a96260ba", + FLASHHIDER_AR15_AEROKNOX_BUTTERFLY_556X45_MUZZLE_BRAKE = "6405ff6bd4578826ec3e377a", + FLASHHIDER_AR15_ALIENTECH_556X45_MUZZLE_BRAKE = "63ac5c9658d0485fc039f0b8", + FLASHHIDER_AR15_AWC_PSR_556X45_MUZZLE_BRAKE = "612e0cfc8004cc50514c2d9e", + FLASHHIDER_AR15_BULLETEC_ST6012_556X45_MUZZLE_BRAKE = "5cf6937cd7f00c056c53fb39", + FLASHHIDER_AR15_COLT_USGI_A2_556X45_FLASH_HIDER = "544a38634bdc2d58388b4568", + FLASHHIDER_AR15_DANIEL_DEFENSE_WAVE_556X45_MUZZLE_BRAKE = "5cff9e5ed7ad1a09407397d4", + FLASHHIDER_AR15_FERFRANS_CQB_556X45_MUZZLE_BRAKE = "5f6372e2865db925d54f3869", + FLASHHIDER_AR15_GRIFFIN_ARMAMENT_GATELOK_HAMMER_556X45_FLASH_HIDER = "6386120cd6baa055ad1e201c", + FLASHHIDER_AR15_HK_BLITZ_556X45_FLASH_HIDER = "615d8e2f1cb55961fa0fd9a4", + FLASHHIDER_AR15_KAC_QDC_556X45_FLASH_SUPPRESSOR_KIT = "56ea8180d2720bf2698b456a", + FLASHHIDER_AR15_NORDIC_COMPONENTS_CORVETTE_556X45_COMPENSATOR = "5d02676dd7ad1a049e54f6dc", + FLASHHIDER_AR15_NOVESKE_KX3_556X45_FLASH_HIDER = "56ea6fafd2720b844b8b4593", + FLASHHIDER_AR15_PWS_CQB_556X45_MUZZLE_BRAKE = "5943ee5a86f77413872d25ec", + FLASHHIDER_AR15_SAI_JAILBRAKE_556X45_MUZZLE_DEVICE = "5c78f2882e22165df16b832e", + FLASHHIDER_AR15_SILENCERCO_ASR_556X45_FLASH_HIDER = "609269c3b0e443224b421cc1", + FLASHHIDER_AR15_SUREFIRE_SF3P_556X45_FLASH_HIDER = "5c7fb51d2e2216001219ce11", + FLASHHIDER_AR15_SUREFIRE_SF4P_556X45_FLASH_HIDER = "5ea172e498dacb342978818e", + FLASHHIDER_AR15_SUREFIRE_WARCOMP_556X45_FLASH_HIDER = "5c6d710d2e22165df16b81e7", + FLASHHIDER_AR15_SUREFIRE_WARDEN_556X45_BLAST_REGULATOR = "62669bccdb9ebb4daa44cd14", + FLASHHIDER_AR15_TAA_ZK23_556X45_MUZZLE_BRAKE = "612e0e55a112697a4b3a66e7", + FLASHHIDER_AR15_THUNDER_BEAST_ARMS_223CB_556X45_MUZZLE_BRAKE = "5d440625a4b9361eec4ae6c5", + FLASHHIDER_AR15_TROY_CLAYMORE_556X45_MUZZLE_BRAKE = "5cc9b815d7f00c000e2579d6", + FLASHHIDER_AR15_VENDETTA_PRECISION_VP09_INTERCEPTOR_556X45_MUZZLE_BRAKE = "5a7c147ce899ef00150bd8b8", + FLASHHIDER_AR15_WDR_NERO_556_556X45_MUZZLE_BRAKE = "64943b74e9998d641b0412ed", + FLASHHIDER_AR15_YANKEE_HILL_PHANTOM_556X45_FLASH_HIDER = "626a74340be03179a165e30c", + FLASHHIDER_ASH12_127X55_MUZZLE_BRAKECOMPENSATOR = "5caf17c9ae92150b30006be1", + FLASHHIDER_AWC_PSR_338_LM_MUZZLE_BRAKE = "612e0d81290d254f5e6b291a", + FLASHHIDER_AWC_PSR_762X51_MUZZLE_BRAKE = "612e0d3767085e45ef14057f", + FLASHHIDER_DESERT_TECH_556X45_FLASH_HIDER = "5c48a2a42e221602b66d1e07", + FLASHHIDER_DESERT_TECH_762X51_FLASH_HIDER = "5dcbe965e4ed22586443a79d", + FLASHHIDER_DVL10_762X51_MUZZLE_DEVICE = "58889c7324597754281f9439", + FLASHHIDER_DVL10_M2_762X51_MUZZLE_BRAKE = "5888996c24597754281f9419", + FLASHHIDER_FERFRANS_CRD_556X45_CONCUSSION_REDUCTION_DEVICE = "5f6339d53ada5942720e2dc3", + FLASHHIDER_FN_P90_57X28_FLASH_HIDER = "5cc82796e24e8d000f5859a8", + FLASHHIDER_FN_SCARL_556X45_FLASH_HIDER = "618407a850224f204c1da549", + FLASHHIDER_GLOCK_9X19_CARVER_CUSTOM_4_PORT_COMPENSATOR = "5a7ad0c451dfba0013379712", + FLASHHIDER_GLOCK_9X19_CARVER_CUSTOM_DECELERATOR_3_PORT_COMPENSATOR = "5a7037338dc32e000d46d257", + FLASHHIDER_GLOCK_9X19_DOUBLE_DIAMOND_FLASH_HIDER = "5a70366c8dc32e001207fb06", + FLASHHIDER_GLOCK_9X19_LONE_WOLF_ALPHAWOLF_BULLNOSE_COMPENSATOR = "5a705e128dc32e000d46d258", + FLASHHIDER_GLOCK_9X19_LONE_WOLF_LWDCOMP9_COMPENSATOR = "5a7ad1fb51dfba0013379715", + FLASHHIDER_GLOCK_9X19_STRIKE_INDUSTRIES_G4_SLIDECOMP_COMPENSATOR = "5a7b32a2e899ef00135e345a", + FLASHHIDER_HK_G36C_556X45_4PRONG_FLASH_HIDER = "622f0ee47762f55aaa68ac87", + FLASHHIDER_HK_G36_556X45_4PRONG_FLASH_HIDER = "622f128cec80d870d349b4e8", + FLASHHIDER_HK_G36_556X45_FLASH_HIDER = "622f07cfae33bc505b2c4dd5", + FLASHHIDER_HK_MP5_BT_QD_9X19_MUZZLE_BRAKE = "615d8df08004cc50514c3236", + FLASHHIDER_HK_MP5_NOVESKESTYLE_9X19_MUZZLE_BRAKECOMPENSATOR = "5c07c5ed0db834001b73571c", + FLASHHIDER_HK_MP7A1_46X30_FLASH_HIDER = "5ba26acdd4351e003562908e", + FLASHHIDER_HK_PROLONGED_762X51_FLASH_HIDER = "61713308d92c473c770214a0", + FLASHHIDER_KAC_QDC_556X45_3PRONG_FLASH_ELIMINATOR = "626667e87379c44d557b7550", + FLASHHIDER_KRISS_VECTOR_45_ACP_FLASH_HIDER = "5fb65424956329274326f316", + FLASHHIDER_KRISS_VECTOR_9X19_FLASH_HIDER = "5fbbc3324e8a554c40648348", + FLASHHIDER_LANTAC_BMD_762X51_BLAST_MITIGATION_DEVICE = "5cf78720d7f00c06595bc93e", + FLASHHIDER_M14_JP_ENTERPRISES_762X51_TACTICAL_COMPENSATOR = "5addbb825acfc408fb139400", + FLASHHIDER_M14_SMITH_ENTERPRISE_GOOD_IRON_762X51_MUZZLE_BRAKE = "5addbb945acfc4001a5fc44e", + FLASHHIDER_M14_SMITH_ENTERPRISE_VORTEX_762X51_MUZZLE_BRAKE = "5addbba15acfc400185c2854", + FLASHHIDER_M14_YANKEE_HILL_PHANTOM_762X51_FLASH_HIDER = "5addbbb25acfc40015621bd9", + FLASHHIDER_M1911_ANARCHY_OUTDOORS_45_ACP_MUZZLE_BRAKE = "5ef61964ec7f42238c31e0c1", + FLASHHIDER_M1A_NATIONAL_MATCH_762X51_FLASH_SUPPRESSOR = "5addbb6e5acfc408fb1393fd", + FLASHHIDER_M1A_SMITH_ENTERPRISE_SOCOM_16_762X51_THREADED_MUZZLE_BRAKE_GAS_BLOCK = "5ab3afb2d8ce87001660304d", + FLASHHIDER_M1A_SOCOM_16_762X51_MUZZLE_BRAKECOMPENSATOR = "5aafa1c2e5b5b00015042a56", + FLASHHIDER_MCX_SPEAR_CLUTCHLOK_QD_68X51_SHOULDERED_FLASH_HIDER = "6529113b5ae2ae97b80fdf39", + FLASHHIDER_MOSIN_RIFLE_TACFIRE_TANKER_STYLE_762X54R_MUZZLE_BRAKE = "5bbdb83fd4351e44f824c44b", + FLASHHIDER_MOSIN_RIFLE_TEXAS_PRECISION_PRODUCTS_762X54R_MUZZLE_BRAKE = "5bc5a351d4351e003477a414", + FLASHHIDER_MOSIN_RIFLE_WITT_MACHINE_762X54R_MUZZLE_BRAKE = "5bc5a35cd4351e450201232f", + FLASHHIDER_MPX_A2_9X19_FLASH_HIDER = "58949dea86f77409483e16a8", + FLASHHIDER_ORSIS_T5000M_762X51_MUZZLE_BRAKECOMPENSATOR = "5df35e7f2a78646d96665dd4", + FLASHHIDER_P226_TJS_CUSTOM_9X19_COMPENSATOR = "5c6beec32e221601da3578f2", + FLASHHIDER_PKM_762X54R_MUZZLE_BRAKE = "6492efe46cc7e29a6f03b2a0", + FLASHHIDER_PKM_762X54R_SLOTTED_FLASH_HIDER = "6492efb8cfcf7c89e701abf3", + FLASHHIDER_PK_ZENIT_DTK1P_762X54R_MUZZLE_BRAKE = "6492ef63cfcf7c89e701abf1", + FLASHHIDER_PP1901_VITYAZ_9X19_MUZZLE_BRAKECOMPENSATOR = "5998597786f77414ea6da093", + FLASHHIDER_RFB_762X51_FLASH_HIDER = "5f2aa4559b44de6b1b4e68d1", + FLASHHIDER_RPK16_545X39_MUZZLE_BRAKECOMPENSATOR = "5beec3420db834001b095429", + FLASHHIDER_SA58_3PRONG_TRIDENT_762X51_FLASH_HIDER = "5b099b7d5acfc400186331e4", + FLASHHIDER_SA58_AUSTRIAN_STYLE_762X51_MUZZLE_BRAKE = "5b7d68af5acfc400170e30c3", + FLASHHIDER_SAIGA9_9X19_MUZZLE_BRAKECOMPENSATOR = "5998598e86f7740b3f498a86", + FLASHHIDER_SIG_SAUER_762X51_3PRONG_FLASH_HIDER = "5fbcbcf593164a5b6278efb2", + FLASHHIDER_SIG_SAUER_MICRO_BRAKE_762X51_MUZZLE_BRAKE = "5fbcbd02900b1d5091531dd3", + FLASHHIDER_SIG_SAUER_TWO_PORT_BRAKE_762X51_MUZZLE_BRAKE = "5fbcbd10ab884124df0cd563", + FLASHHIDER_SILENCERCO_AC858_ASR_338_LM_MUZZLE_BRAKE = "5fc23636016cce60e8341b05", + FLASHHIDER_STEYR_AUG_A1_556X45_CLOSED_FLASH_HIDER = "630f2872911356c17d06abc5", + FLASHHIDER_STEYR_AUG_A3_556X45_CLOSED_FLASH_HIDER = "630f28f0cadb1fe05e06f004", + FLASHHIDER_STEYR_AUG_A3_556X45_MUZZLE_BRAKE = "630f291b9f66a28b37094bb8", + FLASHHIDER_STM9_9X19_MUZZLE_BRAKE = "60337f5dce399e10262255d1", + FLASHHIDER_SV98_762X54R_MUZZLE_DEVICE = "560e620e4bdc2d724b8b456b", + FLASHHIDER_SV98_762X54R_THREAD_ADAPTER = "5c4eec9b2e2216398b5aaba2", + FLASHHIDER_SV98_SRVV_MK20_762X54R_MUZZLE_BRAKECOMPENSATOR = "5c4ee3d62e2216152006f302", + FLASHHIDER_SVDS_762X54R_MUZZLE_BRAKECOMPENSATOR = "5c471bfc2e221602b21d4e17", + FLASHHIDER_SVT40_762X54R_MUZZLE_BRAKE = "64119d1f2c6d6f921a0929f8", + FLASHHIDER_TACCOM_CARBINE_BRAKE_MULTICALIBER_MUZZLE_BRAKE = "5cf6935bd7f00c06585fb791", + FLASHHIDER_TT_PMLASER_DTKTT_MUZZLE_BRAKECOMPENSATOR = "5bffd7ed0db834001d23ebf9", + FLASHHIDER_VPO136_VEPRKM_762X39_MUZZLE_BRAKECOMPENSATOR = "59e61eb386f77440d64f5daf", + FLASHHIDER_VPO209_THREAD_PROTECTOR = "59e8a00d86f7742ad93b569c", + FLASHHIDER_YANKEE_HILL_ANNIHILATOR_MULTICALIBER_FLASH_HIDER = "5b3a16655acfc40016387a2a", + FLASHLIGHT_ARMYTEK_PREDATOR_PRO_V3_XHP35_HI = "59d790f486f77403cb06aec6", + FLASHLIGHT_ULTRAFIRE_WF501B = "57d17c5e2459775a5c57d17d", + FLASHLIGHT_ZENIT_2D = "646f62fee779812413011ab7", + FOOD_ALYONKA_CHOCOLATE_BAR = "57505f6224597709a92585a9", + FOOD_ARMY_CRACKERS = "5448ff904bdc2d6f028b456e", + FOOD_CAN_OF_BEEF_STEW_LARGE = "57347da92459774491567cf5", + FOOD_CAN_OF_BEEF_STEW_SMALL = "57347d7224597744596b4e72", + FOOD_CAN_OF_CONDENSED_MILK = "5734773724597737fd047c14", + FOOD_CAN_OF_GREEN_PEAS = "57347d692459774491567cf1", + FOOD_CAN_OF_HERRING = "57347d9c245977448b40fa85", + FOOD_CAN_OF_HUMPBACK_SALMON = "57347d5f245977448b40fa81", + FOOD_CAN_OF_PACIFIC_SAURY = "5673de654bdc2d180f8b456d", + FOOD_CAN_OF_SPRATS = "5bc9c29cd4351e003562b8a3", + FOOD_CAN_OF_SQUASH_SPREAD = "57347d8724597744596b4e76", + FOOD_EMELYA_RYE_CROUTONS = "5751487e245977207e26a315", + FOOD_ISKRA_RATION_PACK = "590c5d4b86f774784e1b9c45", + FOOD_JAR_OF_DEVILDOG_MAYO = "5bc9b156d4351e00367fbce9", + FOOD_MRE_RATION_PACK = "590c5f0d86f77413997acfab", + FOOD_PACK_OF_INSTANT_NOODLES = "656df4fec921ad01000481a2", + FOOD_PACK_OF_OAT_FLAKES = "57347d90245977448f7b7f65", + FOOD_PACK_OF_SUGAR = "59e3577886f774176a362503", + FOOD_PACK_OF_TARKER_DRIED_MEAT = "65815f0e647e3d7246384e14", + FOOD_RYE_CROUTONS = "57347d3d245977448f7b7f61", + FOOD_SALTY_DOG_BEEF_SAUSAGE = "635a758bfefc88a93f021b8a", + FOOD_SLICKERS_CHOCOLATE_BAR = "544fb6cc4bdc2d34748b456e", + FOREGRIP_A3_TACTICAL_MVF001_KEYMOD_VERTICAL_FOREGRIP_BLACK = "5fc0f9b5d724d907e2077d82", + FOREGRIP_AI_AXMC_PADDED_HANDGUARD_GRIP = "6281212a09427b40ab14e770", + FOREGRIP_ASH12_VERTICAL = "5cda9bcfd7f00c0c0b53e900", + FOREGRIP_BCM_GUNFIGHTER_MOD_3_VERTICAL = "5c7fc87d2e221644f31c0298", + FOREGRIP_DANIEL_DEFENSE_ENHANCED_MLOK_VERTICAL_FOREGRIP_BLACK = "651a8bf3a8520e48047bf708", + FOREGRIP_DANIEL_DEFENSE_ENHANCED_MLOK_VERTICAL_FOREGRIP_COYOTE_BROWN = "651a8e529829226ceb67c319", + FOREGRIP_FORTIS_SHIFT_TACTICAL = "59f8a37386f7747af3328f06", + FOREGRIP_HERA_ARMS_CQR_TACTICAL = "5a7dbfc1159bd40016548fde", + FOREGRIP_HK_STURMGRIFF = "619386379fb0c665d5490dbe", + FOREGRIP_KAC_VERTICAL = "5c87ca002e221600114cb150", + FOREGRIP_MAGPUL_AFG_TACTICAL_FOREGRIP_BLACK = "588226d124597767ad33f787", + FOREGRIP_MAGPUL_AFG_TACTICAL_FOREGRIP_FDE = "588226dd24597767ad33f789", + FOREGRIP_MAGPUL_AFG_TACTICAL_FOREGRIP_FOREST_GREEN = "588226e62459776e3e094af7", + FOREGRIP_MAGPUL_AFG_TACTICAL_FOREGRIP_OLIVE_DRAB = "588226ef24597767af46e39c", + FOREGRIP_MAGPUL_MLOK_AFG_TACTICAL_FOREGRIP_BLACK = "57cffb66245977632f391a99", + FOREGRIP_MAGPUL_MLOK_AFG_TACTICAL_FOREGRIP_FDE = "57cffcd624597763133760c5", + FOREGRIP_MAGPUL_MLOK_AFG_TACTICAL_FOREGRIP_OLIVE_DRAB = "57cffcdd24597763f5110006", + FOREGRIP_MAGPUL_MLOK_AFG_TACTICAL_FOREGRIP_STEALTH_GREY = "57cffce524597763b31685d8", + FOREGRIP_MAGPUL_RVG_FOREGRIP_BLACK = "59fc48e086f77463b1118392", + FOREGRIP_MAGPUL_RVG_FOREGRIP_FDE = "5fce0cf655375d18a253eff0", + FOREGRIP_MONSTRUM_TACTICAL_VERTICAL_FORE_GRIP_KEYMOD = "615d8fd3290d254f5e6b2edc", + FOREGRIP_MP9N_VERTICAL = "5de8fbad2fbe23140d3ee9c4", + FOREGRIP_ORSIS_T5000M_PADDED_HANDGUARD_GRIP = "5df36948bb49d91fb446d5ad", + FOREGRIP_RTM_OSOVETS_P2_TACTICAL = "64806bdd26c80811d408d37a", + FOREGRIP_RTM_OSOVETS_P2_TACTICAL_FOREGRIP_KHAKI = "64807a29e5ffe165600abc97", + FOREGRIP_RTM_PILLAU_P2_TACTICAL_FOREGRIP_RED = "65169d5b30425317755f8e25", + FOREGRIP_RTM_PILLAU_TACTICAL = "5cf4fb76d7f00c065703d3ac", + FOREGRIP_RTM_PILLAU_TACTICAL_FOREGRIP_SAND = "648067db042be0705c0b3009", + FOREGRIP_SIG_SAUER_VERTICAL_FOREGRIP_KEYMOD_BLACK = "5fc0f9cbd6fa9c00c571bb90", + FOREGRIP_STARK_SE5_EXPRESS_FORWARD = "5b057b4f5acfc4771e1bd3e9", + FOREGRIP_STARK_SE5_EXPRESS_FORWARD_FOREGRIP_FDE = "655df24fdf80b12750626d0a", + FOREGRIP_STEYR_AUG_VERTICAL = "634e61b0767cb15c4601a877", + FOREGRIP_STRIKE_INDUSTRIES_COBRA_TACTICAL = "5c791e872e2216001219c40a", + FOREGRIP_STRIKE_INDUSTRIES_COBRA_TACTICAL_FOREGRIP_FDE = "655dccfdbdcc6b5df71382b6", + FOREGRIP_TACTICAL_DYNAMICS_SKELETONIZED = "5f6340d3ca442212f4047eb2", + FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_BLACK = "558032614bdc2de7118b4585", + FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_FDE = "58c157be86f77403c74b2bb6", + FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_STEALTH_GREY = "58c157c886f774032749fb06", + FOREGRIP_VIKING_TACTICS_UVG_TACTICAL = "591af28e86f77414a27a9e1d", + FOREGRIP_ZENIT_RK0_TACTICAL = "5c1bc4812e22164bef5cfde7", + FOREGRIP_ZENIT_RK1_TACTICAL = "5c1bc5612e221602b5429350", + FOREGRIP_ZENIT_RK1_TACTICAL_FOREGRIP_ON_B25U_MOUNT = "5c1cd46f2e22164bef5cfedb", + FOREGRIP_ZENIT_RK2_TACTICAL = "5c1bc5af2e221602b412949b", + FOREGRIP_ZENIT_RK4_TACTICAL = "5c1bc5fb2e221602b1779b32", + FOREGRIP_ZENIT_RK5_TACTICAL = "5c1bc7432e221602b412949d", + FOREGRIP_ZENIT_RK6_TACTICAL = "5c1bc7752e221602b1779b34", + GASBLOCK_AK12_GAS_TUBE = "649ec107961514b22506b10c", + GASBLOCK_AK545_SAG_MK_21_GAS_TUBE = "628b8d83717774443b15e248", + GASBLOCK_AK74_GAS_TUBE_6P20_SB12 = "59c6633186f7740cf0493bb9", + GASBLOCK_AKM_GAS_TUBE_6P1_SB12 = "59d64ec286f774171d1e0a42", + GASBLOCK_AKS74U_GAS_TUBE_6P26_SB12 = "59d36a0086f7747e673f3946", + GASBLOCK_AK_KIBA_ARMS_VDM_CS_GAS_TUBE = "5a01ad4786f77450561fda02", + GASBLOCK_AK_TROY_FULL_LENGTH_RAIL_HANDGUARD_GAS_TUBE_COMBO = "5b237e425acfc4771e1be0b6", + GASBLOCK_AK_ULTIMAK_M1B_GAS_TUBE_HANDGUARD = "59ccfdba86f7747f2109a587", + GASBLOCK_AK_VEZHLIVYY_STRELOK_VS24_VS33C_HANDGUARD_GAS_TUBE_COMBO = "5cf656f2d7f00c06585fb6eb", + GASBLOCK_AK_VEZHLIVYY_STRELOK_VS24_VS33C_HANDGUARD_GAS_TUBE_COMBO_WHITE = "5d4aab30a4b9365435358c55", + GASBLOCK_AR10_CMMG_LOW_PROFILE_GAS_BLOCK = "6065dc8a132d4d12c81fd8e3", + GASBLOCK_AR10_JP_ENTERPRISES_GAS_SYSTEM6 = "5a34fbadc4a28200741e230a", + GASBLOCK_AR10_KAC_LOW_PROFILE_GAS_BLOCK = "5dfa3d45dfc58d14537c20b0", + GASBLOCK_AR15_BALLISTIC_ADVANTAGE_LOPRO_GAS_BLOCK = "63d3ce281fe77d0f2801859e", + GASBLOCK_AR15_DANIEL_DEFENSE_MK12_LOW_PROFILE_GAS_BLOCK = "56eabcd4d2720b66698b4574", + GASBLOCK_AR15_JP_ENTERPRISES_GAS_SYSTEM5B = "5d00ec68d7ad1a04a067e5be", + GASBLOCK_AR15_WINDHAM_WEAPONRY_RAIL_GAS_BLOCK = "56ea8d2fd2720b7c698b4570", + GASBLOCK_HK417_LOW_PROFILE_GAS_BLOCK = "61702f1b67085e45ef140b26", + GASBLOCK_HK_416A5_LOW_PROFILE_GAS_BLOCK = "5bb20dcad4351e3bac1212da", + GASBLOCK_HK_G36_GAS_BLOCK = "622b327b267a1b13a44abea3", + GASBLOCK_M4A1_FRONT_SIGHT_WITH_GAS_BLOCK = "5ae30e795acfc408fb139a0b", + GASBLOCK_MCX_GAS_BLOCK = "5fbc210bf24b94483f726481", + GASBLOCK_MCX_SPEAR_ADJUSTABLE_GAS_PISTON = "652910bc24cbe3c74a05e5b9", + GASBLOCK_MK18_GAS_BLOCK = "5fc2360f900b1d5091531e19", + GASBLOCK_MOLOT_ARMS_AKMTYPE_GAS_TUBE = "59e649f986f77411d949b246", + GASBLOCK_OPSKS_GAS_TUBE = "634f036a517ccc8a960fc746", + GASBLOCK_PP1901_VITYAZ_GAS_TUBE = "59ccd11386f77428f24a488f", + GASBLOCK_RD704_SLR_ION_LITE_RAILED_GAS_TUBE_HANDGUARD_GAS_TUBE_COMBO = "628a83c29179c324ed269508", + GASBLOCK_SKS_GAS_TUBE = "634f02d7517ccc8a960fc744", + GASBLOCK_SVDS_GAS_TUBE = "5c471c842e221615214259b5", + GASBLOCK_VPO101_VEPRHUNTER_GAS_TUBE = "5c5039be2e221602b177c9ff", + GRENADELAUNCHER_FN40GL_01 = "5e81ebcd8e146c7080625e15", + GRENADELAUNCHER_FN40GL_02 = "639c3fbbd0446708ee622ee9", + GRENADELAUNCHER_FN40GL_03 = "639af924d0446708ee62294e", + GRENADE_F1_HAND = "5710c24ad2720bc3458b45a3", + GRENADE_M18_SMOKE_GRENADE_GREEN = "617aa4dd8166f034d57de9c5", + GRENADE_M67_HAND = "58d3db5386f77426186285a0", + GRENADE_MODEL_7290_FLASH_BANG = "619256e5f8af2c1a4e1f5d92", + GRENADE_RDG2B_SMOKE = "5a2a57cfc4a2826c6e06d44a", + GRENADE_RGD5_HAND = "5448be9a4bdc2dfd2f8b456a", + GRENADE_RGN_HAND = "617fd91e5539a84ec44ce155", + GRENADE_RGO_HAND = "618a431df1eb8e24b8741deb", + GRENADE_VOG17_KHATTABKA_IMPROVISED_HAND = "5e32f56fcb6d5863cc5e5ee4", + GRENADE_VOG25_KHATTABKA_IMPROVISED_HAND = "5e340dcdcb6d5863cc5e5efb", + GRENADE_ZARYA_STUN = "5a0c27731526d80618476ac4", + HANDGUARD_9A91 = "644675573d52156624001fc9", + HANDGUARD_AI_AXMC_AX_KEYSLOT_16_INCH = "6281209662cba23f6c4d7a19", + HANDGUARD_AK12 = "649ec127c93611967b034957", + HANDGUARD_AK545_SAG_MK3 = "628b916469015a4e1711ed8d", + HANDGUARD_AK74_PLUM_POLYMER_HANDGUARD_6P20_SB9 = "5cbda9f4ae9215000e5b9bfc", + HANDGUARD_AK74_POLYMER_HANDGUARD_6P20_SB9 = "5648b1504bdc2d9d488b4584", + HANDGUARD_AK74_WOODEN_HANDGUARD_6P20_SB6 = "5648b0744bdc2d363b8b4578", + HANDGUARD_AKM_WOODEN_HANDGUARD_6P1_SB61 = "59d64f2f86f77417193ef8b3", + HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF = "5d15ce51d7ad1a1eff619092", + HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF_MLOK = "647db1eca8d3399c380d195c", + HANDGUARD_AKS74U_CAA_XRSU47SU_TACTICAL = "5a957c3fa2750c00137fa5f7", + HANDGUARD_AKS74U_WOODEN_HANDGUARD_6P26_SB6 = "57dc32dc245977596d4ef3d3", + HANDGUARD_AKS74U_ZENIT_B11 = "57ffa9f4245977728561e844", + HANDGUARD_AK_100SERIES_POLYMER = "5cbda392ae92155f3c17c39f", + HANDGUARD_AK_545_DESIGN_AGGRESSOR = "5cf4e3f3d7f00c06595bc7f0", + HANDGUARD_AK_AKDEMIA_DOMINATOR = "647dba3142c479dde701b654", + HANDGUARD_AK_ALFA_ARMS_ASPID = "647dd2b8a12ebf96c3031655", + HANDGUARD_AK_CAA_RS47 = "5648ae314bdc2d3d1c8b457f", + HANDGUARD_AK_CNC_GUNS_OV_GP = "6389f1dfc879ce63f72fc43e", + HANDGUARD_AK_HEXAGON_TUBULAR = "5b800e9286f7747a8b04f3ff", + HANDGUARD_AK_HEXAGON_TUBULAR_HANDGUARD_ANODIZED_RED = "5b80242286f77429445e0b47", + HANDGUARD_AK_KREBS_CUSTOM_UFM_KEYMOD = "59fb375986f7741b681b81a6", + HANDGUARD_AK_MAGPUL_MOE_AKM_HANDGUARD_BLACK = "57cff947245977638e6f2a19", + HANDGUARD_AK_MAGPUL_MOE_AKM_HANDGUARD_FDE = "57cffd8224597763b03fc609", + HANDGUARD_AK_MAGPUL_MOE_AKM_HANDGUARD_OLIVE_DRAB = "57cffddc24597763133760c6", + HANDGUARD_AK_MAGPUL_MOE_AKM_HANDGUARD_PLUM = "57cffe0024597763b03fc60b", + HANDGUARD_AK_MAGPUL_MOE_AKM_HANDGUARD_STEALTH_GREY = "57cffe20245977632f391a9d", + HANDGUARD_AK_MAGPUL_ZHUKOVU_HANDGUARD_BLACK = "5c9a07572e221644f31c4b32", + HANDGUARD_AK_MAGPUL_ZHUKOVU_HANDGUARD_FDE = "5c9a1c3a2e2216000e69fb6a", + HANDGUARD_AK_MAGPUL_ZHUKOVU_HANDGUARD_PLUM = "5c9a1c422e221600106f69f0", + HANDGUARD_AK_STRIKE_INDUSTRIES_TRAX_1 = "5a9d56c8a2750c0032157146", + HANDGUARD_AK_STRIKE_INDUSTRIES_TRAX_2_HANDGUARD_EXTENSION = "5a9d6d34a2750c00141e07da", + HANDGUARD_AK_TDI_AKML = "5d1b198cd7ad1a604869ad72", + HANDGUARD_AK_TDI_AKML_HANDGUARD_ANODIZED_BRONZE = "5d4aaa73a4b9365392071175", + HANDGUARD_AK_TDI_AKML_HANDGUARD_ANODIZED_RED = "5d4aaa54a4b9365392071170", + HANDGUARD_AK_TDI_X47_TACTICAL_HANDGUARD_RAIL_SYSTEM = "5f6331e097199b7db2128dc2", + HANDGUARD_AK_VLTOR_CMRD_KEYMOD = "5c17664f2e2216398b5a7e3c", + HANDGUARD_AK_ZENIT_B10 = "5c617a5f2e2216000f1e81b3", + HANDGUARD_AK_ZENIT_B10M_HANDGUARD_WITH_B19_UPPER_MOUNT = "5648b4534bdc2d3d1c8b4580", + HANDGUARD_AK_ZENIT_B30_HANDGUARD_WITH_B31S_UPPER_HANDGUARD_RAIL = "5efaf417aeb21837e749c7f2", + HANDGUARD_AR10_CMMG_MK3_RML15_15_INCH_MLOK = "6065881d1246154cad35d637", + HANDGUARD_AR10_CMMG_MK3_RML9_9_INCH_MLOK = "6065880c132d4d12c81fd8da", + HANDGUARD_AR10_KAC_URX_4_145_INCH = "5df916dfbb49d91fb446d6b9", + HANDGUARD_AR10_LANCER_LCH7_125_INCH_MLOK = "5f6336bbda967c74a42e9932", + HANDGUARD_AR10_NOVESKE_SWS_N6_105_INCH = "5d00ede1d7ad1a0940739a76", + HANDGUARD_AR10_NOVESKE_SWS_N6_SPLIT = "5d00ef6dd7ad1a0940739b16", + HANDGUARD_AR15_AB_ARMS_MOD1 = "647de824196bf69818044c93", + HANDGUARD_AR15_AB_ARMS_MOD1_LOWER = "647def638295ebcb5b02f05b", + HANDGUARD_AR15_ADAR_215_WOODEN = "5c0e2f5cd174af02a012cfc9", + HANDGUARD_AR15_AEROKNOX_AX15_105_INCH_MLOK = "619b5db699fb192e7430664f", + HANDGUARD_AR15_AEROKNOX_AX15_158_INCH_MLOK = "640b20359ab20e15ee445fa9", + HANDGUARD_AR15_AEROKNOX_AX15_4_INCH_MLOK = "63f4ba71f31d4a33b87bd046", + HANDGUARD_AR15_ALEXANDER_ARMS_MK10_RIFLE_LENGTH = "5b2cfa535acfc432ff4db7a0", + HANDGUARD_AR15_COLT_M4_CARBINE_LENGTH = "5ae30db85acfc408fb139a05", + HANDGUARD_AR15_COLT_M4_CARBINE_LENGTH_LOWER = "637f57a68d137b27f70c4968", + HANDGUARD_AR15_DANIEL_DEFENSE_RIS_II_1225_HANDGUARD_COYOTE_BROWN = "5c9a25172e2216000f20314e", + HANDGUARD_AR15_DANIEL_DEFENSE_RIS_II_1225_LOWER_HANDGUARD_COYOTE_BROWN = "638f2003bbd47aeb9e0ff637", + HANDGUARD_AR15_DANIEL_DEFENSE_RIS_II_95_HANDGUARD_BLACK = "588b56d02459771481110ae2", + HANDGUARD_AR15_DANIEL_DEFENSE_RIS_II_95_HANDGUARD_COYOTE_BROWN = "55f84c3c4bdc2d5f408b4576", + HANDGUARD_AR15_DANIEL_DEFENSE_RIS_II_95_LOWER_HANDGUARD_BLACK = "6396aaa9a52ace83df0840ab", + HANDGUARD_AR15_DANIEL_DEFENSE_RIS_II_95_LOWER_HANDGUARD_COYOTE_BROWN = "638f1ff84822287cad04be9d", + HANDGUARD_AR15_DANIEL_DEFENSE_RIS_II_FSP_95_HANDGUARD_COYOTE_BROWN = "5c9a26332e2216001219ea70", + HANDGUARD_AR15_GEISSELE_SMR_MK16_135_INCH_MLOK_HANDGUARD_DDC = "5ea16ada09aa976f2e7a51be", + HANDGUARD_AR15_GEISSELE_SMR_MK16_95_INCH_MLOK_HANDGUARD_DDC = "5ea16acdfadf1d18c87b0784", + HANDGUARD_AR15_KAC_RIS = "55d459824bdc2d892f8b4573", + HANDGUARD_AR15_KAC_RIS_LOWER = "637f57b78d137b27f70c496a", + HANDGUARD_AR15_KAC_URX_31_1075_INCH = "5d122e7bd7ad1a07102d6d7f", + HANDGUARD_AR15_KAC_URX_31_1075_INCH_LOWER = "637f57c532b66e7e320a6676", + HANDGUARD_AR15_KAC_URX_3_8_INCH = "5d123102d7ad1a004e475fe5", + HANDGUARD_AR15_KAC_URX_3_8_INCH_LOWER = "637f57d2f5ef8c33840d36c4", + HANDGUARD_AR15_LONE_STAR_ION_LITE = "5d4405f0a4b9361e6a4e6bd9", + HANDGUARD_AR15_MAGPUL_MOE_SL_CARBINE_LENGTH_MLOK = "5c78f2792e221600106f4683", + HANDGUARD_AR15_MAGPUL_MOE_SL_MEDIUM_LENGTH_MLOK = "5c78f26f2e221601da3581d1", + HANDGUARD_AR15_PRECISION_REFLEX_GEN_III_DELTA_CARBON = "63888bbd28e5cc32cc09d2b6", + HANDGUARD_AR15_SAI_10_INCH_QD_RAIL = "5c78f2612e221600114c9f0d", + HANDGUARD_AR15_SAI_145_INCH_QD_RAIL = "5c78f2492e221600114c9f04", + HANDGUARD_AR15_SOYUZTM_12_INCH_MLOK = "6034e3e20ddce744014cb878", + HANDGUARD_AR15_SOYUZTM_15_INCH_MLOK = "6034e3d953a60014f970617b", + HANDGUARD_AR15_SOYUZTM_9_INCH_MLOK = "6034e3cb0ddce744014cb870", + HANDGUARD_AR15_STNGR_VYPR_10_INCH_MLOK = "5c6d5d8b2e221644fc630b39", + HANDGUARD_AR15_STRIKE_INDUSTRIES_VIPER_CARBINE_LENGTH_MLOK = "5d00e0cbd7ad1a6c6566a42d", + HANDGUARD_AR15_STRIKE_INDUSTRIES_VIPER_CARBINE_LENGTH_MLOK_HANDGUARD_FDE = "5d00f63bd7ad1a59283b1c1e", + HANDGUARD_AR15_STRIKE_INDUSTRIES_VIPER_CARBINE_LENGTH_MLOK_LOWER = "637f589af5ef8c33840d36d3", + HANDGUARD_AR15_STRIKE_INDUSTRIES_VIPER_CARBINE_LENGTH_MLOK_LOWER_HANDGUARD_FDE = "63969c9019971040b005049b", + HANDGUARD_AR15_UNIQUEARS_WING_SKULL_12_INCH = "6087e0336d0bd7580617bb7a", + HANDGUARD_AR15_WAR_SPORT_LVOAC_HANDGUARD_BLACK = "595cfa8b86f77427437e845b", + HANDGUARD_AR15_WAR_SPORT_LVOAS_HANDGUARD_BLACK = "595cf16b86f77427440c32e2", + HANDGUARD_ASH12_POLYMER = "5cdaa99dd7f00c002412d0b2", + HANDGUARD_BENELLI_M3_FOREND = "6259c4347d6aab70bc23a190", + HANDGUARD_DVL10_M2 = "5888976c24597754281f93f5", + HANDGUARD_FAL_ORIGINAL = "5b7bed205acfc400161d08cc", + HANDGUARD_HK417_EXTENDED_FREE_FLOAT_HANDGUARD_WITH_FLIPUP_FRONT_SIGHT = "61703001d92c473c77021497", + HANDGUARD_HK417_PATROL_HANDGUARD_WITH_FLIPUP_FRONT_SIGHT = "61712eae6c780c1e710c9a1d", + HANDGUARD_HK_416A5_MIDWEST_INDUSTRIES_135_INCH_MLOK = "5c6d11072e2216000e69d2e4", + HANDGUARD_HK_416A5_MIDWEST_INDUSTRIES_9_INCH_MLOK = "5c6d10fa2e221600106f3f23", + HANDGUARD_HK_416A5_MRS_KEYMOD_14_INCH = "5c6d10e82e221601da357b07", + HANDGUARD_HK_416A5_QUAD_RAIL = "5bb20de5d4351e0035629e59", + HANDGUARD_HK_416A5_QUAD_RAIL_EXTENDED = "5bb20dfcd4351e00334c9e24", + HANDGUARD_HK_416A5_QUAD_RAIL_HANDGUARD_WITH_FLIPUP_FRONT_SIGHT = "5bb20df1d4351e00347787d5", + HANDGUARD_HK_416A5_STRIKE_INDUSTRIES_CRUX_15_INCH_MLOK = "5c6d11152e2216000f2003e7", + HANDGUARD_HK_416A5_TROY_MLOK_13_INCH = "5c6c2c9c2e2216000f2002e4", + HANDGUARD_HK_G36_2VENT = "62386b2adf47d66e835094b2", + HANDGUARD_HK_G36_4VENT = "62386b7153757417e93a4e9f", + HANDGUARD_HK_G36_6VENT = "6231654c71b5bc3baa1078e5", + HANDGUARD_HK_MP5K_POLYMER = "5d2f259b48f0355a844acd74", + HANDGUARD_HK_MP5SD_POLYMER = "5926f34786f77469195bfe92", + HANDGUARD_HK_MP5_BT_TL99_ALUMINUM = "5a9548c9159bd400133e97b3", + HANDGUARD_HK_MP5_CAA_HX5 = "5d010d1cd7ad1a59283b1ce7", + HANDGUARD_HK_MP5_PTR_TRIRAIL = "5d19cd96d7ad1a4a992c9f52", + HANDGUARD_HK_MP5_WIDE_TROPICAL_POLYMER = "5926c36d86f77467a92a8629", + HANDGUARD_KS23M_FORESTOCK = "5e848d51e4dbc5266a4ec63b", + HANDGUARD_M700_AB_ARMS_MODX_GEN_3_KEYMOD = "5cde7afdd7f00c000d36b89d", + HANDGUARD_M870_FAB_DEFENSE_PR870_FORESTOCK = "5a788031c585673f2b5c1c79", + HANDGUARD_M870_MAGPUL_MOE = "5a788068c5856700137e4c8f", + HANDGUARD_M870_SPEEDFEED_SHORT = "5a788089c5856700142fdd9c", + HANDGUARD_MCX_GEN1_KEYMOD_12_INCH = "5fbc227aa56d053a3543f79e", + HANDGUARD_MCX_GEN1_KEYMOD_8_INCH = "5fbc226eca32ed67276c155d", + HANDGUARD_MCX_SPEAR_11_INCH_MLOK = "652910ef50dc782999054b97", + HANDGUARD_MDR_HANDGUARD_BLACK = "5dcbd6b46ec07c0c4347a564", + HANDGUARD_MDR_HANDGUARD_FDE = "5c48a14f2e2216152006edd7", + HANDGUARD_MK18_18_INCH = "5fc235db2770a0045c59c683", + HANDGUARD_MOSSBERG_590A1_MAGPUL_MOE_FORESTOCK = "5eea21647547d6330471b3c9", + HANDGUARD_MOSSBERG_590A1_SPEEDFEED_SHORT = "5e87076ce2db31558c75a11d", + HANDGUARD_MP133_BEECHWOOD_FORESTOCK = "55d45d3f4bdc2d972f8b456c", + HANDGUARD_MP133_CUSTOM_PLASTIC_FORESTOCK_WITH_RAILS = "55d45f484bdc2d972f8b456d", + HANDGUARD_MP153_POLYMER_FORESTOCK = "56deed6ed2720b4c698b4583", + HANDGUARD_MP155_ULTIMA_POLYMER_FORESTOCK = "606ee5c81246154cad35d65e", + HANDGUARD_MP155_WALNUT_FORESTOCK = "607d5aa50494a626335e12ed", + HANDGUARD_MP18_POLYMER = "61f8024263dc1250e26eb029", + HANDGUARD_MP18_WOODEN = "61f7b85367ddd414173fdb36", + HANDGUARD_MPX_GEN1 = "5894a42086f77426d2590762", + HANDGUARD_MPX_LANCER_OEM_14_INCH_MLOK = "5c59529a2e221602b177d160", + HANDGUARD_MPX_MIDWEST_INDUSTRIES_105_INCH_MLOK = "5c5db6302e2216000e5e47f0", + HANDGUARD_MPX_MIDWEST_INDUSTRIES_14_INCH_MLOK = "5c5db63a2e2216000f1b284a", + HANDGUARD_MPX_MIDWEST_INDUSTRIES_45_INCH_MLOK = "5c5db5f22e2216000e5e47e8", + HANDGUARD_MPX_MIDWEST_INDUSTRIES_65_INCH_MLOK = "5c5db5fc2e2216000f1b2842", + HANDGUARD_MTS25512_BEECHWOOD_FORESTOCK = "6123649463849f3d843da7c4", + HANDGUARD_OPSKS_GAS_TUBE_COVER = "634f03d40384a3ba4f06f874", + HANDGUARD_ORSIS_T5000M = "5df25d3bfd6b4e6e2276dc9a", + HANDGUARD_PK_ZENIT_B50 = "6491c6f6ef312a876705191b", + HANDGUARD_R11_RSASS = "5a329052c4a28200741e22d3", + HANDGUARD_RFB = "5f2aa47a200e2c0ee46efa71", + HANDGUARD_RPD_WOODEN = "6513f05a94c72326990a3866", + HANDGUARD_RPK16 = "5beec3e30db8340019619424", + HANDGUARD_SA58FAL_AIM_SPORTS_UNIVERSAL_KEYMOD = "5b7be2345acfc400196d524a", + HANDGUARD_SA58FAL_AIM_SPORTS_UNIVERSAL_MLOK = "5b7bebc85acfc43bca706666", + HANDGUARD_SA58FAL_BELGIAN_STYLE = "5b7d671b5acfc43d82528ddd", + HANDGUARD_SA58FAL_VLTOR_CASVFAL = "5b7bedd75acfc43d825283f9", + HANDGUARD_SA58FAL_VLTOR_CASVFAS = "5b7bee755acfc400196d5383", + HANDGUARD_SA58_QUAD_RAIL = "5b099a9d5acfc47a8607efe7", + HANDGUARD_SA58_QUAD_RAIL_FULL_LENGTH = "5b7be1ca5acfc400170e2d2f", + HANDGUARD_SAIGA9_HARTMAN_GYURZA = "651bfe4d1065f87f082e7209", + HANDGUARD_SKS_ATI_MONTE_CARLO_GAS_TUBE_COVER = "653ecc425a1690d9d90491e4", + HANDGUARD_SKS_FAB_DEFENSE_UAS_GAS_TUBE_COVER = "653ece125a1690d9d90491e8", + HANDGUARD_SKS_GAS_TUBE_COVER = "634f08a21f9f536910079b5a", + HANDGUARD_SKS_TAPCO_RAILED_GAS_TUBE_COVER = "653ecd065a1690d9d90491e6", + HANDGUARD_SOK12_BRAVO18_ALUMINIUM = "5f63418ef5750b524b45f116", + HANDGUARD_SOK12_CUSTOM_GUNS_TYPE340 = "6086b5731246154cad35d6c7", + HANDGUARD_SOK12_LEAPERS_UTG_PRO_MTU002_LONG_TOP_ALUMINUM = "5827272a24597748c74bdeea", + HANDGUARD_SOK12_LEAPERS_UTG_PRO_MTU002_SHORT_TOP_ALUMINUM = "58272b392459774b4c7b3ccd", + HANDGUARD_SOK12_POLYMER_HANDGUARD_SB71 = "576169e62459773c69055191", + HANDGUARD_SR2M_POLYMER = "62e15547db1a5c41971c1b5e", + HANDGUARD_SR2M_POLYMER_HANDGUARD_BLACK = "637ba19df7ca6372bf2613d7", + HANDGUARD_SV98_CNC_GUNS_OVSV98_KEYMOD = "623c3c1f37b4b31470357737", + HANDGUARD_SVDS_POLYMER = "5c471c6c2e221602b66cd9ae", + HANDGUARD_SVD_CAA_XRSDRG = "5e5699df2161e06ac158df6f", + HANDGUARD_SVD_MODERNIZATION_KIT = "5e56991336989c75ab4f03f6", + HANDGUARD_SVD_SAG_MK1_CHASSIS = "5dfcd0e547101c39625f66f9", + HANDGUARD_VPO136_VEPRKM_WOODEN = "59e6284f86f77440d569536f", + HANDGUARD_VPO209_WOODEN = "59e898ee86f77427614bd225", + HANDGUARD_VSK94 = "6448f2f6d4928d46d30be3f6", + HANDGUARD_WASR1063_CAF_WOODEN_FOREGRIP = "5d2c829448f0353a5c7d6674", + HEADPHONES_GSSH01_ACTIVE_HEADSET = "5b432b965acfc47a8774094e", + HEADPHONES_MSA_SORDIN_SUPREME_PROXL_HEADSET = "5aa2ba71e5b5b000137b758f", + HEADPHONES_OPSCORE_FAST_RAC_HEADSET = "5a16b9fffcdbcb0176308b34", + HEADPHONES_OPSMEN_EARMOR_M32_HEADSET = "6033fa48ffd42c541047f728", + HEADPHONES_PELTOR_COMTAC_2_HEADSET_OD_GREEN = "5645bcc04bdc2d363b8b4572", + HEADPHONES_PELTOR_COMTAC_4_HYBRID_HEADSET_COYOTE_BROWN = "628e4e576d783146b124c64d", + HEADPHONES_PELTOR_TACTICAL_SPORT_HEADSET = "5c165d832e2216398b5a7e36", + HEADPHONES_WALKERS_RAZOR_DIGITAL_HEADSET = "5e4d34ca86f774264f758330", + HEADPHONES_WALKERS_XCEL_500BT_DIGITAL_HEADSET = "5f60cd6cf2bcbb675b00dac6", + HEADWEAR_6B47_RATNIKBSH_HELMET_DIGITAL_FLORA_COVER = "5aa7cfc0e5b5b00015693143", + HEADWEAR_6B47_RATNIKBSH_HELMET_OLIVE_DRAB = "5a7c4850e899ef00150be885", + HEADWEAR_ALTYN_BULLETPROOF_HELMET_OLIVE_DRAB = "5aa7e276e5b5b000171d0647", + HEADWEAR_ARMASIGHT_NVG_HEAD_STRAP = "5c066ef40db834001966a595", + HEADWEAR_ARMY_CAP = "59e770f986f7742cbe3164ef", + HEADWEAR_ARMY_CAP_BLACK = "603618feffd42c541047f771", + HEADWEAR_ARMY_CAP_CADPAT = "6040de02647ad86262233012", + HEADWEAR_ARMY_CAP_COYOTE_TAN = "603619720ca681766b6a0fc4", + HEADWEAR_ARMY_CAP_DESERT = "60361b0b5a45383c122086a1", + HEADWEAR_ARMY_CAP_FLORA = "60361a7497633951dc245eb4", + HEADWEAR_ARMY_CAP_UCP = "60361b5a9a15b10d96792291", + HEADWEAR_BANDANA = "5b43271c5acfc432ff4dce65", + HEADWEAR_BASEBALL_CAP = "572b7d8524597762b472f9d1", + HEADWEAR_BASMACH_LEATHER_CAP = "65749ccf33fdc9c0cf06d3ca", + HEADWEAR_BEANIE = "572b7fa124597762b472f9d2", + HEADWEAR_BEAR_BASEBALL_CAP_BLACK = "5b40e5e25acfc4001a599bea", + HEADWEAR_BEAR_BASEBALL_CAP_OLIVE_DRAB = "5aa2b87de5b5b00016327c25", + HEADWEAR_BERET_BLACK = "5f60e6403b85f6263c14558c", + HEADWEAR_BERET_BLUE = "5f60e7788adaa7100c3adb49", + HEADWEAR_BERET_OLIVE_DRAB = "5f60e784f2bcbb675b00dac7", + HEADWEAR_BIG_PIPES_BANDANA = "628e4dd1f477aa12234918aa", + HEADWEAR_BNTI_LSHZ2DTM_HELMET_BLACK = "5d6d3716a4b9361bc8618872", + HEADWEAR_BOMBER_BEANIE = "60bf74184a63fc79b60c57f6", + HEADWEAR_BOSS_CAP = "60a7acf20c5cb24b01346648", + HEADWEAR_CRYE_PRECISION_AIRFRAME_HELMET_TAN = "5c17a7ed2e2216152142459c", + HEADWEAR_DED_MOROZ_HAT = "5a43943586f77416ad2f06e2", + HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "5b4329f05acfc47a86086aa1", + HEADWEAR_DIAMOND_AGE_BASTION_HELMET_BLACK = "5ea17ca01412a1425304d1c0", + HEADWEAR_DIAMOND_AGE_NEOSTEEL_HIGH_CUT_HELMET_BLACK = "65709d2d21b9f815e208ff95", + HEADWEAR_DOOR_KICKER_BOONIE_HAT = "5d96141523f0ea1b7f2aacab", + HEADWEAR_EMERCOM_CAP = "5aa2b89be5b5b0001569311f", + HEADWEAR_FORT_KIVERM_BULLETPROOF_HELMET = "5645bc214bdc2d363b8b4571", + HEADWEAR_GALVION_CAIMAN_HYBRID_HELMET_GREY = "5f60b34a41e30a4ab12a6947", + HEADWEAR_GUS_BASEBALL_CAP = "65749cb8e0423b9ebe0c79c9", + HEADWEAR_HIGHCOM_STRIKER_ACHHC_IIIA_HELMET_BLACK = "5b40e3f35acfc40016388218", + HEADWEAR_HIGHCOM_STRIKER_ACHHC_IIIA_HELMET_OLIVE_DRAB = "5b40e4035acfc47a87740943", + HEADWEAR_HIGHCOM_STRIKER_ULACH_IIIA_HELMET_BLACK = "5b40e1525acfc4771e1c6611", + HEADWEAR_HIGHCOM_STRIKER_ULACH_IIIA_HELMET_DESERT_TAN = "5b40e2bc5acfc40016388216", + HEADWEAR_JACKOLANTERN_TACTICAL_PUMPKIN_HELMET = "59ef13ca86f77445fd0e2483", + HEADWEAR_JACK_PYKE_HUNTING_LLCS_BOONIE_HAT = "618aef6d0a5a59657e5f55ee", + HEADWEAR_KINDA_COWBOY_HAT = "5aa2b9ede5b5b000137b758b", + HEADWEAR_KOLPAK1S_RIOT_HELMET = "59e7711e86f7746cae05fbe1", + HEADWEAR_KOTTON_BEANIE = "5bd073c986f7747f627e796c", + HEADWEAR_LEATHER_CAP = "61c18db6dfd64163ea78fbb4", + HEADWEAR_LSHZ_LIGHTWEIGHT_HELMET_OLIVE_DRAB = "5b432d215acfc4771e1c6624", + HEADWEAR_MASKA1SCH_BULLETPROOF_HELMET_KILLA_EDITION = "5c0e874186f7745dc7616606", + HEADWEAR_MASKA1SCH_BULLETPROOF_HELMET_OLIVE_DRAB = "5c091a4e0db834001d5addc8", + HEADWEAR_MILTEC_BOONIE_HAT = "5b4327aa5acfc400175496e0", + HEADWEAR_MSA_ACH_TC2001_MICH_SERIES_HELMET_OLIVE_DRAB = "5d5e7d28a4b936645d161203", + HEADWEAR_MSA_ACH_TC2002_MICH_SERIES_HELMET_OLIVE_DRAB = "5d5e9c74a4b9364855191c40", + HEADWEAR_MSA_GALLET_TC_800_HIGH_CUT_COMBAT_HELMET_BLACK = "5e4bfc1586f774264f7582d3", + HEADWEAR_NFM_HJELM_HELMET_HELLHOUND_GREY = "61bca7cda0eae612383adf57", + HEADWEAR_NPP_KLASS_TOR2_HELMET_OLIVE_DRAB = "65719f0775149d62ce0a670b", + HEADWEAR_OPSCORE_FAST_MT_SUPER_HIGH_CUT_HELMET_BLACK = "5a154d5cfcdbcb001a3b00da", + HEADWEAR_OPSCORE_FAST_MT_SUPER_HIGH_CUT_HELMET_URBAN_TAN = "5ac8d6885acfc400180ae7b0", + HEADWEAR_POLICE_CAP = "5aa2b8d7e5b5b00014028f4a", + HEADWEAR_POMPON_HAT = "5b4329075acfc400153b78ff", + HEADWEAR_PSH97_DJETA_RIOT_HELMET = "5c0d2727d174af02a012cf58", + HEADWEAR_RIVALS_2020_BEANIE = "5f994730c91ed922dd355de3", + HEADWEAR_RIVALS_2020_CAP = "5f99418230835532b445e954", + HEADWEAR_RYST_BULLETPROOF_HELMET_BLACK = "5f60c74e3b85f6263c145586", + HEADWEAR_SANTA_HAT = "5a43957686f7742a2c2f11b0", + HEADWEAR_SHPM_FIREFIGHTER_HELMET = "5c08f87c0db8340019124324", + HEADWEAR_SKI_HAT_WITH_HOLES_FOR_EYES = "5ab8f20c86f7745cdb629fb2", + HEADWEAR_SSH68_STEEL_HELMET_OLIVE_DRAB = "5c06c6a80db834001b735491", + HEADWEAR_SSSH94_SFERAS_HELMET = "5aa7d193e5b5b000171d063f", + HEADWEAR_STICH_PROFI_CHIMERA_BOONIE_HAT = "60b52e5bc7d8103275739d67", + HEADWEAR_TACKEK_FAST_MT_HELMET_REPLICA = "5ea05cf85ad9772e6624305d", + HEADWEAR_TACTICAL_FLEECE_BEANIE_TAN = "5aa2ba19e5b5b00014028f4e", + HEADWEAR_TEAM_WENDY_EXFIL_BALLISTIC_HELMET_BLACK = "5e00c1ad86f774747333222c", + HEADWEAR_TEAM_WENDY_EXFIL_BALLISTIC_HELMET_COYOTE_BROWN = "5e01ef6886f77445f643baa4", + HEADWEAR_TSH4ML_SOFT_TANK_CREW_HELMET = "5df8a58286f77412631087ed", + HEADWEAR_UNTAR_HELMET = "5aa7d03ae5b5b00016327db5", + HEADWEAR_USEC_BASEBALL_CAP_BLACK = "5b40e61f5acfc4001a599bec", + HEADWEAR_USEC_BASEBALL_CAP_COYOTE = "5aa2a7e8e5b5b00016327c16", + HEADWEAR_USHANKA_EAR_FLAP_HAT = "59e7708286f7742cbd762753", + HEADWEAR_UX_PRO_BEANIE = "5aa2ba46e5b5b000137b758d", + HEADWEAR_VENGEFUL_ZRYACHIYS_BALACLAVA_FOLDED = "6531119b9afebff7ff0a1769", + HEADWEAR_VULKAN5_LSHZ5_BULLETPROOF_HELMET_BLACK = "5ca20ee186f774799474abc2", + HEADWEAR_WILCOX_SKULL_LOCK_HEAD_MOUNT = "5a16bb52fcdbcb001a3b00dc", + HEADWEAR_ZRYACHIYS_BALACLAVA_FOLDED = "636270263f2495c26f00b007", + HEADWEAR_ZSH12M_HELMET_BLACK_COVER = "5aa7e4a4e5b5b000137b76f2", + HEADWEAR_ZSH12M_HELMET_OLIVE_DRAB = "5aa7e454e5b5b0214e506fa2", + HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_1 = "63dbd45917fff4dee40fe16e", + HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_2 = "65424185a57eea37ed6562e9", + HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_3 = "6542435ea57eea37ed6562f0", + HIDEOUTAREACONTAINER_WEAPONSTAND_STASH_1 = "6401c7b213d9b818bf0e7dd7", + HIDEOUTAREACONTAINER_WEAPONSTAND_STASH_2 = "64381b582bb1c5dedd0fc925", + HIDEOUTAREACONTAINER_WEAPONSTAND_STASH_3 = "64381b6e44b37a080d0245b9", + INFO_ADVANCED_ELECTRONIC_MATERIALS_TEXTBOOK = "6389c92d52123d5dd17f8876", + INFO_BAKEEZY_COOK_BOOK = "62a09e73af34e73a266d932a", + INFO_DECRYPTED_FLASH_DRIVE = "660bbc98c38b837877075e4a", + INFO_DIARY = "590c645c86f77412b01304d9", + INFO_DOCUMENTS_WITH_DECRYPTED_DATA = "660bc341c38b837877075e4c", + INFO_ENCRYPTED_FLASH_DRIVE = "660bbc47c38b837877075e47", + INFO_INTELLIGENCE_FOLDER = "5c12613b86f7743bbe2c3f76", + INFO_MILITARY_FLASH_DRIVE = "62a0a16d0b9d3c46de5b6e97", + INFO_SAS_DRIVE = "590c37d286f77443be3d7827", + INFO_SECURE_FLASH_DRIVE = "590c621186f774138d11ea29", + INFO_SECURE_FLASH_DRIVE_V2 = "6331ba83f2ab4f3f09502983", + INFO_SECURE_MAGNETIC_TAPE_CASSETTE = "61bf7c024770ee6f9c6b8b53", + INFO_SILICON_OPTOELECTRONIC_INTEGRATED_CIRCUITS_TEXTBOOK = "6389c8fb46b54c634724d847", + INFO_SLIM_DIARY = "590c651286f7741e566b6461", + INFO_SSD_DRIVE = "590c392f86f77444754deb29", + INFO_TECH_MANUAL = "590c639286f774151567fa95", + INFO_TERRAGROUP_BLUE_FOLDERS_MATERIALS = "6389c8c5dbfd5e4b95197e6b", + INFO_TOPOGRAPHIC_SURVEY_MAPS = "62a0a124de7ac81993580542", + INFO_VIDEO_CASSETTE_WITH_THE_CYBORG_KILLER_MOVIE = "62a09e974f842e1bd12da3f0", + INVENTORY_DEFAULT = "55d7217a4bdc2d86028b456d", + IRONSIGHT_AK105_REAR_SIGHT_6P44_SB130 = "5ac733a45acfc400192630e2", + IRONSIGHT_AK12_REAR_SIGHT = "649ec2cec93611967b03495e", + IRONSIGHT_AK12_REAR_SIGHT_BASE = "649ec2da59cbb3c813042dca", + IRONSIGHT_AK545_SAG_REAR_SIGHT = "628b9471078f94059a4b9bfb", + IRONSIGHT_AK74M_REAR_SIGHT_6P20_SB2 = "5ac72e475acfc400180ae6fe", + IRONSIGHT_AK74_REAR_SIGHT_6P20_SB2 = "5649b0544bdc2d1b2b8b458a", + IRONSIGHT_AKMB_SYSTEM_REAR_SIGHT = "5a0eb980fcdbcb001a3b00a6", + IRONSIGHT_AKMP_SYSTEM_FRONT_SIGHT_DEVICE = "5a0f096dfcdbcb0176308b15", + IRONSIGHT_AKMP_SYSTEM_REAR_SIGHT_DEVICE = "5a0ed824fcdbcb0176308b0d", + IRONSIGHT_AKM_REAR_SIGHT_6P1_SB21 = "59d650cf86f7741b846413a4", + IRONSIGHT_AK_RD_ENHANCED_V2_REAR_SIGHT = "628a7b23b0f75035732dd565", + IRONSIGHT_AK_TAKTIKA_TULA_TT01_REAR_SIGHT_RAIL = "5649d9a14bdc2d79388b4580", + IRONSIGHT_APB_REAR_SIGHT = "5aba639ed8ce8700182ece67", + IRONSIGHT_APS_FRONT_SIGHT = "5aba62f8d8ce87001943946b", + IRONSIGHT_APS_REAR_SIGHT = "5aba637ad8ce87001773e17f", + IRONSIGHT_AR15_COLT_A2_REAR_SIGHT = "55d5f46a4bdc2d1b198b4567", + IRONSIGHT_AR15_LEAPERS_UTG_LOW_PROFILE_A2_FRONT_SIGHT = "55d4af3a4bdc2d972f8b456f", + IRONSIGHT_AR15_REAR_SIGHT_CARRY_HANDLE = "5ae30bad5acfc400185c2dc4", + IRONSIGHT_ASH12_FOLDING_FRONT_SIGHT = "5caf16a2ae92152ac412efbc", + IRONSIGHT_ASH12_REAR_SIGHT_CARRY_HANDLE = "5caf1691ae92152ac412efb9", + IRONSIGHT_AS_VAL_REAR_SIGHT = "57c44e7b2459772d28133248", + IRONSIGHT_BENELLI_M3_GHOST_RING_REAR_SIGHT = "625ebcef6f53af4aa66b44dc", + IRONSIGHT_CHIAPPA_RHINO_FRONT_SIGHT = "619f4d304c58466fe1228437", + IRONSIGHT_CHIAPPA_RHINO_REAR_SIGHT = "619f4cee4c58466fe1228435", + IRONSIGHT_CHIAPPA_RHINO_RED_FIBER_OPTIC_FRONT_SIGHT = "619f52454c58466fe122843b", + IRONSIGHT_CHIAPPA_RHINO_RED_FIBER_OPTIC_REAR_SIGHT = "619f4f8c4c58466fe1228439", + IRONSIGHT_FN_FIVESEVEN_MK2_FRONT_SIGHT = "5d3eb536a4b9363b1f22f8e2", + IRONSIGHT_FN_FIVESEVEN_MK2_REAR_SIGHT = "5d3eb4aba4b93650d64e497d", + IRONSIGHT_FN_SCAR_FLIPUP_FRONT_SIGHT = "61816fcad92c473c770215cc", + IRONSIGHT_FN_SCAR_FLIPUP_REAR_SIGHT = "61817865d3a39d50044c13a4", + IRONSIGHT_GLOCK_19X_FRONT_SIGHT = "630765777d50ff5e8a1ea718", + IRONSIGHT_GLOCK_19X_REAR_SIGHT = "630765cb962d0247b029dc45", + IRONSIGHT_GLOCK_DEAD_RINGER_SNAKE_EYE_FRONT_SIGHT = "5a7d90eb159bd400165484f1", + IRONSIGHT_GLOCK_DEAD_RINGER_SNAKE_EYE_REAR_SIGHT = "5a7d9122159bd4001438dbf4", + IRONSIGHT_GLOCK_FRONT_SIGHT = "5a6f58f68dc32e000a311390", + IRONSIGHT_GLOCK_REAR_SIGHT = "5a6f5d528dc32e00094b97d9", + IRONSIGHT_GLOCK_TRUGLO_TFX_FRONT_SIGHT = "5a7d9104159bd400134c8c21", + IRONSIGHT_GLOCK_TRUGLO_TFX_REAR_SIGHT = "5a7d912f159bd400165484f3", + IRONSIGHT_GLOCK_ZEV_TECH_FRONT_SIGHT = "5a71e0048dc32e000c52ecc8", + IRONSIGHT_GLOCK_ZEV_TECH_REAR_SIGHT = "5a71e0fb8dc32e00094b97f2", + IRONSIGHT_HK_416A5_FLIPUP_REAR_SIGHT = "5bb20e49d4351e3bac1212de", + IRONSIGHT_HK_G36_FRONT_SIGHT = "623166e08c43374ca1567195", + IRONSIGHT_HK_G36_REAR_SIGHT = "6231670f0b8aa5472d060095", + IRONSIGHT_HK_MP5_DRUM_REAR_SIGHT = "5926d2be86f774134d668e4e", + IRONSIGHT_HK_MP7_FLIPUP_FRONT_SIGHT = "5ba26b01d4351e0085325a51", + IRONSIGHT_HK_MP7_FLIPUP_REAR_SIGHT = "5ba26b17d4351e00367f9bdd", + IRONSIGHT_HK_USP_FRONT_SIGHT = "6194f35c18a3974e5e7421e6", + IRONSIGHT_HK_USP_REAR_SIGHT = "6194f2912d2c397d6600348d", + IRONSIGHT_HK_USP_RED_DOT_SIGHT_MOUNT = "61963a852d2c397d660036ad", + IRONSIGHT_HK_USP_TACTICAL_FRONT_SIGHT = "6194f3286db0f2477964e67d", + IRONSIGHT_HK_USP_TACTICAL_REAR_SIGHT = "6194f2df645b5d229654ad77", + IRONSIGHT_KAC_FOLDING_FRONT_SIGHT = "5c17804b2e2216152006c02f", + IRONSIGHT_KAC_FOLDING_MICRO_FRONT_SIGHT = "5dfa3d950dee1b22f862eae0", + IRONSIGHT_KAC_FOLDING_MICRO_REAR_SIGHT = "5dfa3d7ac41b2312ea33362a", + IRONSIGHT_KAC_FOLDING_REAR_SIGHT = "5c1780312e221602b66cc189", + IRONSIGHT_KRISS_DEFIANCE_LOW_PROFILE_FLIPUP_FRONT_SIGHT = "5fb6567747ce63734e3fa1dc", + IRONSIGHT_KRISS_DEFIANCE_LOW_PROFILE_FLIPUP_REAR_SIGHT = "5fb6564947ce63734e3fa1da", + IRONSIGHT_M14_SA_ENLARGED_MILITARY_APERTURE_REAR_SIGHT = "5abcbb20d8ce87001773e258", + IRONSIGHT_M1911A1_FRONT_SIGHT = "5e81ee213397a21db957f6a6", + IRONSIGHT_M1911A1_REAR_SIGHT = "5e81ee4dcb2b95385c177582", + IRONSIGHT_M1A_SA_NATIONAL_MATCH_062_BLADE_FRONT_SIGHT = "5addba3e5acfc4001669f0ab", + IRONSIGHT_M1A_SA_XS_POST_125_BLADE_FRONT_SIGHT = "5aafa49ae5b5b00015042a58", + IRONSIGHT_M45A1_NOVAK_LOMOUNT_FRONT_SIGHT = "5f3e78a7fbf956000b716b8e", + IRONSIGHT_M45A1_NOVAK_LOMOUNT_REAR_SIGHT = "5f3e7897ddc4f03b010e204a", + IRONSIGHT_M9A3_FRONT_SIGHT = "5cadd919ae921500126a77f3", + IRONSIGHT_M9A3_REAR_SIGHT = "5cadd940ae9215051e1c2316", + IRONSIGHT_M9A3_SIGHT_MOUNT_REAR_SIGHT_RAIL = "5cadd954ae921500103bb3c2", + IRONSIGHT_MAGPUL_MBUS_GEN2_FLIPUP_FRONT_SIGHT = "5bc09a30d4351e00367fb7c8", + IRONSIGHT_MAGPUL_MBUS_GEN2_FLIPUP_FRONT_SIGHT_FDE = "5c18b90d2e2216152142466b", + IRONSIGHT_MAGPUL_MBUS_GEN2_FLIPUP_REAR_SIGHT = "5bc09a18d4351e003562b68e", + IRONSIGHT_MAGPUL_MBUS_GEN2_FLIPUP_REAR_SIGHT_FDE = "5c18b9192e2216398b5a8104", + IRONSIGHT_MCX_FLIPUP_FRONT_SIGHT = "5fc0fa362770a0045c59c677", + IRONSIGHT_MCX_FLIPUP_REAR_SIGHT = "5fc0fa957283c4046c58147e", + IRONSIGHT_MOSIN_RIFLE_CARBINE_REAR_SIGHT = "5bfd4c980db834001b73449d", + IRONSIGHT_MOSIN_RIFLE_FRONT_SIGHT = "5ae099875acfc4001714e593", + IRONSIGHT_MOSIN_RIFLE_REAR_SIGHT = "5ae099925acfc4001a5fc7b3", + IRONSIGHT_MOSSBERG_590_GHOST_RING_FRONT_SIGHT = "5e8708d4ae379e67d22e0102", + IRONSIGHT_MOSSBERG_590_GHOST_RING_REAR_SIGHT = "5e87114fe2db31558c75a120", + IRONSIGHT_MP9_REAR_SIGHT = "5de8fb539f98ac2bc659513a", + IRONSIGHT_MPX_FLIPUP_FRONT_SIGHT = "5894a73486f77426d259076c", + IRONSIGHT_MPX_FLIPUP_REAR_SIGHT = "5894a81786f77427140b8347", + IRONSIGHT_P226_FRONT_SIGHT = "56d5a661d2720bd8418b456b", + IRONSIGHT_P226_MEPROLIGHT_TRUDOT_NIGHT_FRONT_SIGHT = "5c07b36c0db834002a1259e9", + IRONSIGHT_P226_MEPROLIGHT_TRUDOT_NIGHT_REAR_SIGHT = "5c07b3850db834002330045b", + IRONSIGHT_P226_REAR_SIGHT = "56d5a77ed2720b90418b4568", + IRONSIGHT_P226_SIGHT_MOUNT_220239_REAR_SIGHT_BEARING = "56ea7293d2720b8d4b8b45ba", + IRONSIGHT_PK_REAR_SIGHT = "6492fb8253acae0af00a29b6", + IRONSIGHT_PL15_EXTENDED_FRONT_SIGHT = "60228a850ddce744014caf69", + IRONSIGHT_PL15_EXTENDED_REAR_SIGHT = "602293f023506e50807090cb", + IRONSIGHT_PL15_FRONT_SIGHT = "60228a76d62c9b14ed777a66", + IRONSIGHT_PL15_REAR_SIGHT = "60229948cacb6b0506369e27", + IRONSIGHT_PM_REAR_SIGHT = "63c6adcfb4ba094317063742", + IRONSIGHT_PP1901_VITYAZ_REAR_SIGHT = "599860e986f7743bb57573a6", + IRONSIGHT_RPD_REAR_SIGHT = "6513f153e63f29908d0ffaba", + IRONSIGHT_RPK16_REAR_SIGHT = "5bf3f59f0db834001a6fa060", + IRONSIGHT_RPK16_REAR_SIGHT_BASE = "5beec9450db83400970084fd", + IRONSIGHT_SA58_HOLLAND_TYPE_REAR_SIGHT = "5b0bc22d5acfc47a8607f085", + IRONSIGHT_SKS_REAR_SIGHT = "574db213245977459a2f3f5d", + IRONSIGHT_SOK12_CSS_REAR_SIGHT_RAIL_MOUNT = "58272b842459774abc128d50", + IRONSIGHT_SOK12_REAR_SIGHT = "57a9b9ce2459770ee926038d", + IRONSIGHT_SV98_REAR_SIGHT = "56083e1b4bdc2dc8488b4572", + IRONSIGHT_SVDS_FRONT_SIGHT = "5c471ba12e221602b3137d76", + IRONSIGHT_SVDS_REAR_SIGHT = "5c471b7e2e2216152006e46c", + IRONSIGHT_SVT40_FRONT_SIGHT = "64119d672c6d6f921a0929fb", + IRONSIGHT_SVT40_REAR_SIGHT = "64119d90dcf48d656f0aa275", + IRONSIGHT_TRIJICON_ACOG_BACKUP_REAR_SIGHT = "5c05295e0db834001a66acbb", + IRONSIGHT_VPO101_VEPRHUNTER_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", + IRONSIGHT_VPO209_REAR_SIGHT = "59e8977386f77415a553c453", + IRONSIGHT_VSS_REAR_SIGHT = "57838e1b2459774a256959b1", + KEYCARD_OBJECT_11SR = "5e42c81886f7742a01529f57", + KEYCARD_OBJECT_21WS = "5e42c83786f7742a021fdf3c", + KEYCARD_TERRAGROUP_LABS_ACCESS = "5c94bbff86f7747ee735c08f", + KEYCARD_TERRAGROUP_LABS_KEYCARD_BLACK = "5c1d0f4986f7744bb01837fa", + KEYCARD_TERRAGROUP_LABS_KEYCARD_BLUE = "5c1d0c5f86f7744bb2683cf0", + KEYCARD_TERRAGROUP_LABS_KEYCARD_GREEN = "5c1d0dc586f7744baf2e7b79", + KEYCARD_TERRAGROUP_LABS_KEYCARD_RED = "5c1d0efb86f7744baf2e7b7b", + KEYCARD_TERRAGROUP_LABS_KEYCARD_VIOLET = "5c1e495a86f7743109743dfb", + KEYCARD_TERRAGROUP_LABS_KEYCARD_YELLOW = "5c1d0d6d86f7744bb2683e1f", + KEYCARD_WITH_A_BLUE_MARKING = "5efde6b4f5448336730dbd61", + KEY_ABANDONED_FACTORY_MARKED = "63a3a93f8a56922e82001f5d", + KEY_ARCHIVE_ROOM = "63a39e49cd6db0635c1975fc", + KEY_ASPECT_COMPANY_OFFICE = "64ce572331dd890873175115", + KEY_BACKUP_HIDEOUT = "6398fd8ad3de3849057f5128", + KEY_BELUGA_RESTAURANT_DIRECTOR = "64ccc1fe088064307e14a6f7", + KEY_CARGO_CONTAINER_MESH_DOOR = "63a39fdf1e21260da44a0256", + KEY_CAR_DEALERSHIP_CLOSED_SECTION = "63a397d3af870e651d58e65b", + KEY_CAR_DEALERSHIP_DIRECTORS_OFFICE_ROOM = "63a399193901f439517cafb6", + KEY_CHEKANNAYA_15_APARTMENT = "63a39fc0af870e651d58e6ae", + KEY_CONCORDIA_APARTMENT_34_ROOM = "64ccc1d4a0f13c24561edf27", + KEY_CONCORDIA_APARTMENT_63_ROOM = "64ccc1f4ff54fb38131acf27", + KEY_CONCORDIA_APARTMENT_64 = "63a71e922b25f7513905ca20", + KEY_CONCORDIA_APARTMENT_64_OFFICE_ROOM = "63a71e86b7f4570d3a293169", + KEY_CONCORDIA_APARTMENT_8_HOME_CINEMA = "64ccc1ec1779ad6ba200a137", + KEY_CONCORDIA_APARTMENT_8_ROOM = "63a71e781031ac76fe773c7d", + KEY_CONCORDIA_SECURITY_ROOM = "63a39c7964283b5e9c56b280", + KEY_CONFERENCE_ROOM = "62987cb98081af308d7558c8", + KEY_CONSTRUCTION_SITE_BUNKHOUSE = "63a39cb1c9b3aa4b61683ee2", + KEY_CONVENIENCE_STORE_STORAGE_ROOM = "61a64428a8c6aa1b795f0ba1", + KEY_COTTAGE_BACK_DOOR = "5a0eb6ac86f7743124037a28", + KEY_COTTAGE_SAFE = "5a0f068686f7745b0d4ea242", + KEY_DORM_GUARD_DESK = "59136a4486f774447a1ed172", + KEY_DORM_OVERSEER = "664d4b0103ef2c61246afb56", + KEY_DORM_ROOM_103 = "5938994586f774523a425196", + KEY_DORM_ROOM_104 = "591383f186f7744a4c5edcf3", + KEY_DORM_ROOM_105 = "591382d986f774465a6413a7", + KEY_DORM_ROOM_108 = "5914578086f774123569ffa4", + KEY_DORM_ROOM_110 = "59136e1e86f774432f15d133", + KEY_DORM_ROOM_114 = "59387a4986f77401cc236e62", + KEY_DORM_ROOM_118 = "5672c92d4bdc2d180f8b4567", + KEY_DORM_ROOM_203 = "5938504186f7740991483f30", + KEY_DORM_ROOM_204 = "59148c8a86f774197930e983", + KEY_DORM_ROOM_206 = "5938603e86f77435642354f4", + KEY_DORM_ROOM_214 = "5780cf942459777df90dcb72", + KEY_DORM_ROOM_218 = "5780cf9e2459777df90dcb73", + KEY_DORM_ROOM_220 = "5780cfa52459777dfb276eb1", + KEY_DORM_ROOM_303 = "593aa4be86f77457f56379f8", + KEY_DORM_ROOM_306 = "5780cda02459777b272ede61", + KEY_DORM_ROOM_308 = "5780cf722459777a5108b9a1", + KEY_DORM_ROOM_314_MARKED = "5780cf7f2459777de4559322", + KEY_DORM_ROOM_315 = "5780cf692459777de4559321", + KEY_EMERCOM_MEDICAL_UNIT = "5ad5db3786f7743568421cce", + KEY_FACTORY_EMERGENCY_EXIT = "5448ba0b4bdc2d02308b456c", + KEY_FINANCIAL_INSTITUTION_OFFICE = "63a39667c9b3aa4b61683e98", + KEY_FINANCIAL_INSTITUTION_SMALL_OFFICE = "63a71ed21031ac76fe773c7f", + KEY_FOLDING_CAR = "59136f6f86f774447a1ed173", + KEY_GAS_STATION_OFFICE = "5780d0652459777df90dcb74", + KEY_GAS_STATION_SAFE = "5a0f045e86f7745b0f0d0e42", + KEY_GAS_STATION_STORAGE_ROOM = "5913877a86f774432f15d444", + KEY_GOSHAN_CASH_REGISTER = "5ad7247386f7747487619dc3", + KEY_GRUMPYS_HIDEOUT = "664d3dd590294949fe2d81b7", + KEY_HEALTH_RESORT_EAST_WING_OFFICE_ROOM_107 = "5a0ea64786f7741707720468", + KEY_HEALTH_RESORT_EAST_WING_OFFICE_ROOM_108 = "5a0ea69f86f7741cd5406619", + KEY_HEALTH_RESORT_EAST_WING_ROOM_205 = "5a144bdb86f7741d374bbde0", + KEY_HEALTH_RESORT_EAST_WING_ROOM_206 = "5a0ee4b586f7743698200d22", + KEY_HEALTH_RESORT_EAST_WING_ROOM_209 = "5a0ee62286f774369454a7ac", + KEY_HEALTH_RESORT_EAST_WING_ROOM_213 = "5a0ee72c86f77436955d3435", + KEY_HEALTH_RESORT_EAST_WING_ROOM_216 = "5a0ee76686f7743698200d5c", + KEY_HEALTH_RESORT_EAST_WING_ROOM_222 = "5a13f24186f77410e57c5626", + KEY_HEALTH_RESORT_EAST_WING_ROOM_226 = "5a13f35286f77413ef1436b0", + KEY_HEALTH_RESORT_EAST_WING_ROOM_306 = "5a145d4786f7744cbb6f4a12", + KEY_HEALTH_RESORT_EAST_WING_ROOM_308 = "5a145d7b86f7744cbb6f4a13", + KEY_HEALTH_RESORT_EAST_WING_ROOM_310 = "5a0eec9686f77402ac5c39f2", + KEY_HEALTH_RESORT_EAST_WING_ROOM_313 = "5a0eecf686f7740350630097", + KEY_HEALTH_RESORT_EAST_WING_ROOM_314 = "5a0eed4386f77405112912aa", + KEY_HEALTH_RESORT_EAST_WING_ROOM_316 = "5a145ebb86f77458f1796f05", + KEY_HEALTH_RESORT_EAST_WING_ROOM_322 = "5a0eedb386f77403506300be", + KEY_HEALTH_RESORT_EAST_WING_ROOM_328 = "5a0eee1486f77402aa773226", + KEY_HEALTH_RESORT_MANAGEMENT_OFFICE_SAFE = "5a0f08bc86f77478f33b84c2", + KEY_HEALTH_RESORT_MANAGEMENT_WAREHOUSE_SAFE = "5a0f0f5886f7741c4e32a472", + KEY_HEALTH_RESORT_OFFICE_KEY_WITH_A_BLUE_TAPE = "5eff09cd30a7dc22fd1ddfed", + KEY_HEALTH_RESORT_UNIVERSAL_UTILITY_ROOM = "5a0ea79b86f7741d4a35298e", + KEY_HEALTH_RESORT_WEST_WING_OFFICE_ROOM_104 = "5a0dc45586f7742f6b0b73e3", + KEY_HEALTH_RESORT_WEST_WING_OFFICE_ROOM_112 = "5a0dc95c86f77452440fc675", + KEY_HEALTH_RESORT_WEST_WING_ROOM_203 = "5a144dfd86f77445cb5a0982", + KEY_HEALTH_RESORT_WEST_WING_ROOM_205 = "5a0ec6d286f7742c0b518fb5", + KEY_HEALTH_RESORT_WEST_WING_ROOM_207 = "5a0ec70e86f7742c0b518fba", + KEY_HEALTH_RESORT_WEST_WING_ROOM_216 = "5a0ee30786f774023b6ee08f", + KEY_HEALTH_RESORT_WEST_WING_ROOM_218 = "5a13eebd86f7746fd639aa93", + KEY_HEALTH_RESORT_WEST_WING_ROOM_219 = "5a13ef0686f7746e5a411744", + KEY_HEALTH_RESORT_WEST_WING_ROOM_220 = "5a0ee34586f774023b6ee092", + KEY_HEALTH_RESORT_WEST_WING_ROOM_221 = "5a0ee37f86f774023657a86f", + KEY_HEALTH_RESORT_WEST_WING_ROOM_222 = "5a1452ee86f7746f33111763", + KEY_HEALTH_RESORT_WEST_WING_ROOM_301 = "5a13ef7e86f7741290491063", + KEY_HEALTH_RESORT_WEST_WING_ROOM_303 = "5a0eeb1a86f774688b70aa5c", + KEY_HEALTH_RESORT_WEST_WING_ROOM_306 = "5a13f46386f7741dd7384b04", + KEY_HEALTH_RESORT_WEST_WING_ROOM_309 = "5a0eeb8e86f77461257ed71a", + KEY_HEALTH_RESORT_WEST_WING_ROOM_321_SAFE = "5a0eff2986f7741fd654e684", + KEY_HEALTH_RESORT_WEST_WING_ROOM_323 = "5a13ee1986f774794d4c14cd", + KEY_HEALTH_RESORT_WEST_WING_ROOM_325 = "5a0eebed86f77461230ddb3d", + KEY_HEP_STATION_STORAGE_ROOM = "5d8e15b686f774445103b190", + KEY_HILLSIDE_HOUSE = "61a6444b8c141d68246e2d2f", + KEY_IDEA_CASH_REGISTER = "5ad7242b86f7740a6a3abd43", + KEY_IRON_GATE = "63a39f6e64283b5e9c56b289", + KEY_KIBA_ARMS_INNER_GRATE_DOOR = "5addaffe86f77470b455f900", + KEY_KIBA_ARMS_OUTER_DOOR = "5ad5d7d286f77450166e0a89", + KEY_LEONS_HIDEOUT = "664d3de85f2355673b09aed5", + KEY_MACHINERY = "5937ee6486f77408994ba448", + KEY_MERIN_CAR_TRUNK = "61aa5b518f5e7a39b41416e2", + KEY_MILITARY_CHECKPOINT = "5913915886f774123603c392", + KEY_MISSAM_FORKLIFT = "62a09ec84f842e1bd12da3f2", + KEY_MVD_ACADEMY_ENTRANCE_HALL_GUARD_ROOM = "6582dc4b6ba9e979af6b79f4", + KEY_MYSTERIOUS_ROOM_MARKED = "64ccc25f95763a1ae376e447", + KEY_NECRUSPHARM_PHARMACY = "5ad5d64486f774079b080af8", + KEY_NEGOTIATION_ROOM = "6582dbe43a2e5248357dbe9a", + KEY_OLI_ADMINISTRATION_OFFICE = "5ad5ccd186f774446d5706e9", + KEY_OLI_CASH_REGISTER = "5ad7217186f7746744498875", + KEY_OLI_LOGISTICS_DEPARTMENT_OFFICE = "5ad5cfbd86f7742c825d6104", + KEY_OLI_OUTLET_UTILITY_ROOM = "5ad5d20586f77449be26d877", + KEY_OPERATING_ROOM = "62987da96188c076bc0d8c51", + KEY_PE_TEACHERS_OFFICE = "64ccc268c41e91416064ebc7", + KEY_PINEWOOD_HOTEL_ROOM_206 = "63a39f18c2d53c2c6839c1d3", + KEY_PINEWOOD_HOTEL_ROOM_215 = "63a39f08cd6db0635c197600", + KEY_POLICE_TRUCK_CABIN = "61aa5aed32a4743c3453d319", + KEY_PORTABLE_BUNKHOUSE = "5938144586f77473c2087145", + KEY_PORTABLE_CABIN = "5780d07a2459777de4559324", + KEY_POWER_SUBSTATION_UTILITY_CABIN = "5ad5d49886f77455f9731921", + KEY_PRIMORSKY_4648_SKYBRIDGE = "63a39e1d234195315d4020bd", + KEY_PRIMORSKY_48_APARTMENT = "63a71eb5b7f4570d3a29316b", + KEY_PRIMORSKY_AVE_APARTMENT = "6391fcf5744e45201147080f", + KEY_PUMPING_STATION_BACK_DOOR = "593858c486f774253a24cb52", + KEY_PUMPING_STATION_FRONT_DOOR = "57a349b2245977762b199ec7", + KEY_RADAR_STATION_COMMANDANT_ROOM = "62987c658081af308d7558c6", + KEY_RBAK = "5d80c78786f774403a401e3e", + KEY_RBAM = "5d80c88d86f77440556dbf07", + KEY_RBAO = "5d80c66d86f774405611c7d6", + KEY_RBBK_MARKED = "5d80c60f86f77440373c4ece", + KEY_RBGN = "5d8e3ecc86f774414c78d05e", + KEY_RBKORL = "5d8e0db586f7744450412a42", + KEY_RBKPRL = "5d8e0e0e86f774321140eb56", + KEY_RBKSM = "5d947d4e86f774447b415895", + KEY_RBMP11 = "5d80c93086f7744036212b41", + KEY_RBMP12 = "5d80c95986f77440351beef3", + KEY_RBMP13 = "5d80cbd886f77470855c26c2", + KEY_RBMP21 = "5d80ca9086f774403a401e40", + KEY_RBMP22 = "5d80cab086f77440535be201", + KEY_RBOB = "5d80c6c586f77440351beef1", + KEY_RBOP = "5d80c8f586f77440373c4ed0", + KEY_RBORB1 = "5d80ccac86f77470841ff452", + KEY_RBORB2 = "5d80ccdd86f77474f7575e02", + KEY_RBORB3 = "5d80cd1a86f77402aa362f42", + KEY_RBPKPM_MARKED = "5ede7a8229445733cb4c18e2", + KEY_RBPP = "5d80cb8786f774405611c7d9", + KEY_RBPSP1 = "5d80cb3886f77440556dbf09", + KEY_RBPSP2 = "5d95d6fa86f77424484aa5e9", + KEY_RBPSV1 = "5d80cb5686f77440545d1286", + KEY_RBPSV2 = "5d95d6be86f77424444eb3a7", + KEY_RBRH = "5da5cdcd86f774529238fb9b", + KEY_RBRLSA = "5ede7b0c6d23e5473e6e8c66", + KEY_RBRS = "5da46e3886f774653b7a83fe", + KEY_RBSMP = "5d947d3886f774447b415893", + KEY_RBST = "5d9f1fa686f774726974a992", + KEY_RBTB = "5d80c6fc86f774403a401e3c", + KEY_RBVO_MARKED = "5d80c62a86f7744036212b3f", + KEY_REAL_ESTATE_AGENCY_OFFICE_ROOM = "6582dc5740562727a654ebb1", + KEY_RELAXATION_ROOM = "6582dbf0b8d7830efc45016f", + KEY_ROGUE_USEC_BARRACK = "62a9cb937377a65d7b070cef", + KEY_ROGUE_USEC_STASH = "61a64492ba05ef10d62adcc1", + KEY_ROGUE_USEC_WORKSHOP = "61aa81fcb225ac1ead7957c3", + KEY_RUSTED_BLOODY = "64d4b23dc1b37504b41ac2b6", + KEY_SHARED_BEDROOM_MARKED = "62987dfc402c7f69bf010923", + KEY_SHATUNS_HIDEOUT = "664d3db6db5dea2bad286955", + KEY_SHTURMANS_STASH = "5d08d21286f774736e7c94c3", + KEY_SMW_CAR = "5a0eb38b86f774153b320eb0", + KEY_STAIR_LANDING = "63a39fd1c9b3aa4b61683efb", + KEY_STORE_MANAGERS = "63a39c69af870e651d58e6aa", + KEY_STORE_SAFE = "5a0f075686f7745bcc42ee12", + KEY_SUPPLY_DEPARTMENT_DIRECTORS_OFFICE = "63a39ce4cd6db0635c1975fa", + KEY_TARBANK_CASH_REGISTER_DEPARTMENT = "64ccc2111779ad6ba200a139", + KEY_TARCONE_DIRECTORS_OFFICE = "5780d0532459777a5108b9a2", + KEY_TERRAGROUP_LABS_ARSENAL_STORAGE_ROOM = "5c1f79a086f7746ed066fb8f", + KEY_TERRAGROUP_LABS_MANAGERS_OFFICE_ROOM = "5c1e2a1e86f77431ea0ea84c", + KEY_TERRAGROUP_LABS_WEAPON_TESTING_AREA = "5c1e2d1f86f77431e9280bee", + KEY_TERRAGROUP_MEETING_ROOM = "64ccc206793ca11c8f450a38", + KEY_TERRAGROUP_SCIENCE_OFFICE = "658199aa38c79576a2569e13", + KEY_TERRAGROUP_SECURITY_ARMORY = "64ccc24de61ea448b507d34d", + KEY_TRAILER_PARK_PORTABLE_CABIN = "5913611c86f77479e0084092", + KEY_ULTRA_MEDICAL_STORAGE = "5e42c71586f7747f245e1343", + KEY_UNDERGROUND_PARKING_UTILITY_ROOM = "658199972dc4e60f6d556a2f", + KEY_UNITY_CREDIT_BANK_CASH_REGISTER = "6581998038c79576a2569e11", + KEY_UNKNOWN = "593962ca86f774068014d9af", + KEY_USEC_COTTAGE_FIRST_SAFE = "61aa5b7db225ac1ead7957c1", + KEY_USEC_COTTAGE_ROOM = "66265d7be65f224b2e17c6aa", + KEY_USEC_COTTAGE_SECOND_SAFE = "61aa5ba8018e9821b7368da9", + KEY_USEC_STASH = "5da743f586f7744014504f72", + KEY_VAZ_CAR = "5913651986f774432f15d132", + KEY_VORONS_HIDEOUT = "664d3ddfdda2e85aca370d75", + KEY_WATER_TREATMENT_PLANT_STORAGE_ROOM = "62987e26a77ec735f90a2995", + KEY_WEAPON_SAFE = "59148f8286f7741b951ea113", + KEY_WEATHER_STATION_SAFE = "5a0f006986f7741ffd2fe484", + KEY_XRAY_ROOM = "64ccc246ff54fb38131acf29", + KEY_YOTOTA_CAR = "591ae8f986f77406f854be45", + KEY_ZB014 = "591afe0186f77431bd616a11", + KEY_ZMEISKY_3_APARTMENT_8 = "63a39dfe3901f439517cafba", + KEY_ZMEISKY_5_APARTMENT_20 = "63a39df18a56922e82001f25", + KNIFE_6KH5_BAYONET = "5bffdc370db834001d23eca8", + KNIFE_ANTIQUE_AXE = "5bc9c1e2d4351e00367fbcf0", + KNIFE_APOK_TACTICAL_WASTELAND_GLADIUS = "664a5428d5e33a713b622379", + KNIFE_BARS_A2607_95KH18 = "57e26fc7245977162a14b800", + KNIFE_BARS_A2607_DAMASCUS = "57e26ea924597715ca604a09", + KNIFE_CAMPER_AXE = "5c012ffc0db834001d23f03f", + KNIFE_CRASH_AXE = "5bffe7930db834001b734a39", + KNIFE_CULTIST = "5fc64ea372b0dd78d51159dc", + KNIFE_ER_FULCRUM_BAYONET = "54491bb74bdc2d09088b4567", + KNIFE_FREEMAN_CROWBAR = "5c07df7f0db834001b73588a", + KNIFE_KIBA_ARMS_TACTICAL_TOMAHAWK = "57cd379a24597778e7682ecf", + KNIFE_MILLER_BROS_BLADES_M2_TACTICAL_SWORD = "5bffdd7e0db834001b734a1a", + KNIFE_MPL50_ENTRENCHING_TOOL = "5bead2e00db834001c062938", + KNIFE_OLD_HAND_SCYTHE = "63495c500c297e20065a08b1", + KNIFE_PRTARAN_POLICE_BATON = "6540d2162ae6d96b540afcaf", + KNIFE_RED_REBEL_ICE_PICK = "5c0126f40db834002a125382", + KNIFE_SOG_VOODOO_HAWK_TACTICAL_TOMAHAWK = "63920105a83e15700a00f168", + KNIFE_SP8_SURVIVAL_MACHETE = "5c010e350db83400232feec7", + KNIFE_SUPERFORS_DB_2020_DEAD_BLOW_HAMMER = "6087e570b998180e9f76dc24", + KNIFE_UNITED_CUTLERY_M48_TACTICAL_KUKRI = "65ca457b4aafb5d7fc0dcb5d", + KNIFE_UVSR_TAIGA1_SURVIVAL_MACHETE = "601948682627df266209af05", + LAUNCHER_GP25_KOSTYOR_40MM_UNDERBARREL_GRENADE = "62e7e7bbe6da9612f743f1e0", + LAUNCHER_GP34_40MM_UNDERBARREL_GRENADE = "5648b62b4bdc2d9d488b4585", + LAUNCHER_M203_40MM_UNDERBARREL_GRENADE = "6357c98711fb55120211f7e1", + LOCKABLECONTAINER_PISTOL_CASE = "567143bf4bdc2d1a0f8b4567", + LOOTCONTAINER_AIRDROP_COMMON_SUPPLY_CRATE = "6223349b3136504a544d1608", + LOOTCONTAINER_AIRDROP_MEDICAL_CRATE = "622334c873090231d904a9fc", + LOOTCONTAINER_AIRDROP_SUPPLY_CRATE = "622334fa3136504a544d160c", + LOOTCONTAINER_AIRDROP_WEAPON_CRATE = "6223351bb5d97a7b2c635ca7", + LOOTCONTAINER_BANK_CASH_REGISTER = "64d116f41a9c6143a956127d", + LOOTCONTAINER_BANK_SAFE = "64d11702dd0cd96ab82c3280", + LOOTCONTAINER_BURIED_BARREL_CACHE = "5d6d2bb386f774785b07a77a", + LOOTCONTAINER_CASH_REGISTER = "578f879c24597735401e6bc6", + LOOTCONTAINER_CASH_REGISTER_TAR22 = "5ad74cf586f774391278f6f0", + LOOTCONTAINER_COMMON_FUND_STASH = "5d07b91b86f7745a077a9432", + LOOTCONTAINER_DEAD_CIVILIAN = "658420d8085fea07e674cdb6", + LOOTCONTAINER_DEAD_SCAV = "5909e4b686f7747f5b744fa4", + LOOTCONTAINER_DRAWER = "578f87b7245977356274f2cd", + LOOTCONTAINER_DUFFLE_BAG = "578f87a3245977356274f2cb", + LOOTCONTAINER_DUFFLE_BAG_ADV = "61aa1e9a32a4743c3453d2cf", + LOOTCONTAINER_GRENADE_BOX = "5909d36d86f774660f0bb900", + LOOTCONTAINER_GROUND_CACHE = "5d6d2b5486f774785c2ba8ea", + LOOTCONTAINER_JACKET = "578f8778245977358849a9b5", + LOOTCONTAINER_JACKET_114KEY = "59387ac686f77401442ddd61", + LOOTCONTAINER_JACKET_204KEY = "5914944186f774189e5e76c2", + LOOTCONTAINER_JACKET_MACHINERYKEY = "5937ef2b86f77408a47244b3", + LOOTCONTAINER_LAB_TECHNICIAN_BODY = "6582e6c6edf14c4c6023adf2", + LOOTCONTAINER_MEDBAG_SMU06 = "5909d24f86f77466f56e6855", + LOOTCONTAINER_MEDBAG_SMU06_ADV = "61aa1ead84ea0800645777fd", + LOOTCONTAINER_MEDCASE = "5909d4c186f7746ad34e805a", + LOOTCONTAINER_MEDICAL_SUPPLY_CRATE = "5d6fe50986f77449d97f7463", + LOOTCONTAINER_PC_BLOCK = "59139c2186f77411564f8e42", + LOOTCONTAINER_PLASTIC_SUITCASE = "5c052cea86f7746b2101e8d8", + LOOTCONTAINER_PMC_BODY = "6582e6d7b14c3f72eb071420", + LOOTCONTAINER_RATION_SUPPLY_CRATE = "5d6fd13186f77424ad2a8c69", + LOOTCONTAINER_SAFE = "578f8782245977354405a1e3", + LOOTCONTAINER_SCAV_BODY = "6582e6bb0c3b9823fe6d1840", + LOOTCONTAINER_TECHNICAL_SUPPLY_CRATE = "5d6fd45b86f774317075ed43", + LOOTCONTAINER_TOOLBOX = "5909d50c86f774659e6aaebe", + LOOTCONTAINER_WEAPON_BOX_4X4 = "5909d7cf86f77470ee57d75a", + LOOTCONTAINER_WEAPON_BOX_5X2 = "5909d5ef86f77467974efbd8", + LOOTCONTAINER_WEAPON_BOX_5X5 = "5909d89086f77472591234a0", + LOOTCONTAINER_WEAPON_BOX_6X3 = "5909d76c86f77471e53d2adf", + LOOTCONTAINER_WOODEN_AMMO_BOX = "5909d45286f77465a8136dc6", + LOOTCONTAINER_WOODEN_CRATE = "578f87ad245977356274f2cc", + MACHINEGUN_AGS30_30X29MM_AUTOMATIC_GRENADE_LAUNCHER = "5d52cc5ba4b9367408500062", + MACHINEGUN_DEGTYAREV_RPDN_762X39_MACHINE_GUN = "65268d8ecb944ff1e90ea385", + MACHINEGUN_DEGTYAREV_RPD_762X39_MACHINE_GUN = "6513ef33e06849f06c0957ca", + MACHINEGUN_KALASHNIKOV_PKM_762X54R_MACHINE_GUN = "64637076203536ad5600c990", + MACHINEGUN_KALASHNIKOV_PKP_762X54R_INFANTRY_MACHINE_GUN = "64ca3d3954fc657e230529cc", + MACHINEGUN_KALASHNIKOV_PKTM_762X54R_MODERNIZED_TANK_MACHINE_GUN = "657857faeff4c850222dff1b", + MACHINEGUN_NSV_UTYOS_127X108_HEAVY_MACHINE_GUN = "5cdeb229d7f00c000e7ce174", + MACHINEGUN_RPK16_545X39_LIGHT_MACHINE_GUN = "5beed0f50db834001c062b12", + MAGAZINE_127X108_100_100RND = "5cffa483d7ad1a049e54ef1c", + MAGAZINE_127X55_ASH12_10RND = "5caf1041ae92157c28402e3f", + MAGAZINE_127X55_ASH12_20RND = "5caf1109ae9215753c44119f", + MAGAZINE_127X55_RSH12_CYL_5RND = "633ec6ee025b096d320a3b15", + MAGAZINE_12G_255_CYL_5RND = "60dc519adf4c47305f6d410d", + MAGAZINE_12G_590A1X8_8RND = "5e87080c81c4ed43e83cefda", + MAGAZINE_12G_M3X11_11RND = "625ff3046d721f05d93bf2ee", + MAGAZINE_12G_M3X13_13RND = "625ff31daaaa8c1130599f64", + MAGAZINE_12G_M3X5_5RND = "625ff2ccb8c587128c1a01dd", + MAGAZINE_12G_M3X7_7RND = "6259bdcabd28e4721447a2aa", + MAGAZINE_12G_M3X9_9RND = "625ff2eb9f5537057932257d", + MAGAZINE_12G_M870X10_10RND = "5a78832ec5856700155a6ca3", + MAGAZINE_12G_M870X4_4RND = "5a7882dcc5856700177af662", + MAGAZINE_12G_M870X7_7RND = "5a78830bc5856700137e4c90", + MAGAZINE_12G_MP133X6_6RND = "55d484b44bdc2d1d4e8b456d", + MAGAZINE_12G_MP133X8_8RND = "55d485804bdc2d8c2f8b456b", + MAGAZINE_12G_MP153X4_4RND = "56deee15d2720bee328b4567", + MAGAZINE_12G_MP153X5_5RND = "5882163e24597758206fee8c", + MAGAZINE_12G_MP153X6_6RND = "5882163824597757561aa922", + MAGAZINE_12G_MP153X7_7RND = "5882163224597757561aa920", + MAGAZINE_12G_MP153X8_8RND = "56deeefcd2720bc8328b4568", + MAGAZINE_12G_MP155X6_6RND = "6076c87f232e5a31c233d50e", + MAGAZINE_12G_POWERMAG_20RND = "5cf8f3b0d7f00c00217872ef", + MAGAZINE_12G_SAI02_10RND = "5a966f51a2750c00156aacf6", + MAGAZINE_12G_SB5_5RND = "57616a9e2459773c7a400234", + MAGAZINE_20G_2001_SB3X2_2RND = "5a38ee51c4a282000c5a955c", + MAGAZINE_20G_SB3X4_4RND = "5a38ed75c4a28232996e40c6", + MAGAZINE_20G_SB3X5_5RND = "5c6161fb2e221600113fbde5", + MAGAZINE_20X1MM_DRUM_20RND = "66015dc4aaad2f54cb04c56a", + MAGAZINE_23X75_KS23MX3_3RND = "5f647d9f8499b57dc40ddb93", + MAGAZINE_30X29_AGS30_99RND = "5d52d479a4b936793d58c76b", + MAGAZINE_366TKM_6610_20RND = "587df583245977373c4f1129", + MAGAZINE_366TKM_6L10_30RND = "5a01c29586f77474660c694c", + MAGAZINE_366TKM_6P2_BAK_40RND = "5b1fb3e15acfc4001637f068", + MAGAZINE_366TKM_6P2_SB11_40RND = "59e5f5a486f7746c530b3ce2", + MAGAZINE_366TKM_AK103_30RND = "5ac66bea5acfc43b321d4aec", + MAGAZINE_366TKM_AK30_30RND = "59fafc5086f7740dbe19f6c3", + MAGAZINE_366TKM_AK30_FDE_30RND = "59fafc9386f774067d462453", + MAGAZINE_366TKM_AK55_30RND = "59d625f086f774661516605d", + MAGAZINE_366TKM_AKA16_73RND = "5c6175362e221600133e3b94", + MAGAZINE_366TKM_AKMS_AL_30RND = "5a0060fc86f7745793204432", + MAGAZINE_366TKM_AK_AL_10RND = "5b1fd4e35acfc40018633c39", + MAGAZINE_366TKM_AK_RIBBED_10RND = "59e5d83b86f7745aed03d262", + MAGAZINE_366TKM_GEN_M3_20RND = "64b9cf0ac12b9c38db26923a", + MAGAZINE_366TKM_GEN_M3_30RND = "59d6272486f77466146386ff", + MAGAZINE_366TKM_GEN_M3_BANANA_30RND = "5e21a3c67e40bd02257a008a", + MAGAZINE_366TKM_KCI_SKS_75RND = "61695095d92c473c7702147a", + MAGAZINE_366TKM_MOLOT_75RND = "5cbdc23eae9215001136a407", + MAGAZINE_366TKM_SKS_AALVX_35RND = "5c5970672e221602b21d7855", + MAGAZINE_366TKM_SKS_INT_10RND = "587df3a12459772c28142567", + MAGAZINE_366TKM_ULTIMAG_30RND = "6272874a6c47bd74f92e2087", + MAGAZINE_366TKM_VPO215_4RND = "5de653abf76fdc1ce94a5a2a", + MAGAZINE_366TKM_X47_762_50RND = "5cfe8010d7ad1a59283b14c6", + MAGAZINE_40X46_MSGL_0RND = "627bce33f21bc425b06ab967", + MAGAZINE_45ACP_1911_7RND = "5e81c4ca763d9f754677befa", + MAGAZINE_45ACP_G30_MAGEX_30RND = "5fb651dc85f90547f674b6f4", + MAGAZINE_45ACP_GLOCK_45_13RND = "5fb651b52b1b027b1f50bcff", + MAGAZINE_45ACP_MECGAR_11RND = "5ef3448ab37dfd6af863525c", + MAGAZINE_45ACP_UMP_45_25RND = "5fc3e466187fea44d52eda90", + MAGAZINE_45ACP_USP45T_12RND = "6193d3149fb0c665d5490e32", + MAGAZINE_45ACP_USP45_12RND = "6193d338de3cdf1d2614a6fc", + MAGAZINE_45ACP_WILSON_7RND = "5f3e77b26cda304dcc634057", + MAGAZINE_46X30_MP7_20RND = "5ba264f6d4351e0034777d52", + MAGAZINE_46X30_MP7_30RND = "5ba2657ed4351e0035628ff2", + MAGAZINE_46X30_MP7_40RND = "5ba26586d4351e44f824b340", + MAGAZINE_545X39_6L18_45RND = "564ca9df4bdc2d35148b4569", + MAGAZINE_545X39_6L20_30RND = "564ca99c4bdc2d16268b4589", + MAGAZINE_545X39_6L23_30RND = "55d480c04bdc2d1d4e8b456a", + MAGAZINE_545X39_6L23_PLUM_30RND = "5cbdaf89ae9215000e5b9c94", + MAGAZINE_545X39_6L26_45RND = "55d481904bdc2d8c2f8b456a", + MAGAZINE_545X39_6L31_60RND = "55d482194bdc2d1d4e8b456b", + MAGAZINE_545X39_AK12_30RND = "5bed61680db834001d2c45ab", + MAGAZINE_545X39_AK12_OLD_30RND = "649ec30cb013f04a700e60fb", + MAGAZINE_545X39_GEN_M3_30RND = "5aaa4194e5b5b055d06310a5", + MAGAZINE_545X39_RPK16_DRUM_95RND = "5bed625c0db834001c062946", + MAGAZINE_545X39_SAIGA_545_10RND = "55d4837c4bdc2d1d4e8b456c", + MAGAZINE_545X39_SAIGA_545_20RND = "64b9e265c94d0d15c5027e35", + MAGAZINE_556X45_6L29_30RND = "5ac66c5d5acfc4001718d314", + MAGAZINE_556X45_AUG_10RND = "630e1adbbd357927e4007c09", + MAGAZINE_556X45_AUG_30RND = "62e7c98b550c8218d602cbb4", + MAGAZINE_556X45_AUG_42RND = "630e295c984633f1fb0e7c30", + MAGAZINE_556X45_BATTLEMAG_30RND = "5c6d46132e221601da357d56", + MAGAZINE_556X45_C10_AK_30RND = "5c0548ae0db834001966a3c2", + MAGAZINE_556X45_G36_30RND = "62307b7b10d2321fa8741921", + MAGAZINE_556X45_GEN_M3_10RND = "5aaa5e60e5b5b000140293d6", + MAGAZINE_556X45_GEN_M3_20RND = "5448c1d04bdc2dff2f8b4569", + MAGAZINE_556X45_GEN_M3_30RND = "5aaa5dfee5b5b000140293d3", + MAGAZINE_556X45_GEN_M3_30RND_FDE = "6241c2c2117ad530666a5108", + MAGAZINE_556X45_GEN_M3_40RND = "544a378f4bdc2d30388b4567", + MAGAZINE_556X45_GEN_M3_FDE_30RND = "5d1340b3d7ad1a0b52682ed7", + MAGAZINE_556X45_GEN_M3_FDE_40RND = "5d1340bdd7ad1a0e8d245aab", + MAGAZINE_556X45_GEN_M3_WINDOW_30RND = "55802d5f4bdc2dac148b458e", + MAGAZINE_556X45_GEN_M3_WINDOW_FDE_30RND = "5d1340cad7ad1a0b0b249869", + MAGAZINE_556X45_HK_POLY_30RND = "5c6d42cb2e2216000e69d7d1", + MAGAZINE_556X45_HK_STEEL_30RND = "5c05413a0db834001c390617", + MAGAZINE_556X45_MAG5100_100RND = "5c6592372e221600133e47d7", + MAGAZINE_556X45_MAG560_60RND = "544a37c44bdc2d25388b4567", + MAGAZINE_556X45_MK16_30RND = "61840bedd92c473c77021635", + MAGAZINE_556X45_MK16_30RND_FDE = "61840d85568c120fdd2962a5", + MAGAZINE_556X45_PMAG_D60_60RND = "59c1383d86f774290a37e0ca", + MAGAZINE_556X45_PM_GEN2_30RND = "5c6d450c2e221600114c997d", + MAGAZINE_556X45_STANAG_30RND = "55d4887d4bdc2d962f8b4570", + MAGAZINE_57X28_57_20RND = "5d3eb5eca4b9363b1f22f8e4", + MAGAZINE_57X28_P90_50RND = "5cc70093e4a949033c734312", + MAGAZINE_762X25TT_PPSH_35RND = "5ea034eb5aad6446a939737b", + MAGAZINE_762X25TT_PPSH_71RND = "5ea034f65aad6446a939737e", + MAGAZINE_762X25TT_TT105_8RND = "571a29dc2459771fb2755a6a", + MAGAZINE_762X39_BUBEN_100RND = "6513f0a194c72326990a3868", + MAGAZINE_762X51_417_762_10RND = "617130016c780c1e710c9a24", + MAGAZINE_762X51_417_762_20RND = "617131a4568c120fdd29482d", + MAGAZINE_762X51_AA70_10RND = "5d25af8f8abbc3055079fec5", + MAGAZINE_762X51_AA70_20RND = "5cf12a15d7f00c05464b293f", + MAGAZINE_762X51_AICS_10RND = "5d25a6538abbc306c62e630d", + MAGAZINE_762X51_AICS_5RND = "5d25a4a98abbc30b917421a4", + MAGAZINE_762X51_AXMC_308_10RND = "628120f210e26c1f344e6558", + MAGAZINE_762X51_DVL10_10RND = "5888988e24597752fe43a6fa", + MAGAZINE_762X51_KAC_762_10RND = "5df8f535bb49d91fb446d6b0", + MAGAZINE_762X51_KAC_762_20RND = "5df8f541c41b2312ea3335e3", + MAGAZINE_762X51_L1A1_30RND = "5b7d37845acfc400170e2f87", + MAGAZINE_762X51_L7AWM_20RND = "65293c38fc460e50a509cb25", + MAGAZINE_762X51_L7AWM_25RND = "65293c7a17e14363030ad308", + MAGAZINE_762X51_M14_30RND = "5addcce35acfc4001a5fc635", + MAGAZINE_762X51_M1A_10RND = "64b9e2037fdfb81df81e3c25", + MAGAZINE_762X51_M1A_20RND = "5aaf8a0be5b5b00015693243", + MAGAZINE_762X51_MDT_12RND = "5d25a6a48abbc306c62e6310", + MAGAZINE_762X51_MK17_20RND = "618168dc8004cc50514c34fc", + MAGAZINE_762X51_MK17_20RND_FDE = "6183d53f1cb55961fa0fdcda", + MAGAZINE_762X51_PMAG_762_20RND = "5a3501acc4a282000d72293a", + MAGAZINE_762X51_PMAG_AC_10RND = "5d25a7b88abbc3054f3e60bc", + MAGAZINE_762X51_PMAG_AC_5RND = "5ce69cbad7f00c00b61c5098", + MAGAZINE_762X51_SA58FAL_10RND = "5b7bef1e5acfc43d82528402", + MAGAZINE_762X51_SA58FAL_20RND = "5b099ac65acfc400186331e1", + MAGAZINE_762X51_SA58FAL_30RND = "5b7bef5d5acfc43bca7067a3", + MAGAZINE_762X51_SA58_MMW_20RND = "5b7c2d1d5acfc43d1028532a", + MAGAZINE_762X51_T5000M_5RND = "5df25b6c0b92095fd441e4cf", + MAGAZINE_762X51_VPO101_10RND = "5c503ad32e2216398b5aada2", + MAGAZINE_762X51_VPO101_5RND = "5c503ac82e221602b21d6e9a", + MAGAZINE_762X51_WYATT_10RND = "5bfeaa0f0db834001b734927", + MAGAZINE_762X51_WYATT_5RND = "5bfea7ad0db834001c38f1ee", + MAGAZINE_762X51_X14_762_50RND = "5addccf45acfc400185c2989", + MAGAZINE_762X51_XFAL_50RND = "5b7bef9c5acfc43d102852ec", + MAGAZINE_762X54R_AA762R_02_10RND = "5bae13ded4351e44f824bf38", + MAGAZINE_762X54R_AVT_15RND = "641074a07fd350b98c0b3f96", + MAGAZINE_762X54R_MOSIN_5RND = "5ae0973a5acfc4001562206c", + MAGAZINE_762X54R_PKTM_250RND = "65785979bec02a3fe82c181e", + MAGAZINE_762X54R_PK_100RND = "646372518610c40fc20204e8", + MAGAZINE_762X54R_SV98_10RND = "559ba5b34bdc2d1f1a8b4582", + MAGAZINE_762X54R_SVD_10RND = "5c471c442e221602b542a6f8", + MAGAZINE_762X54R_SVD_20RND = "5c88f24b2e22160bc12c69a6", + MAGAZINE_762X54R_SVT_10_10RND = "6422e1ea3c0f06190302161a", + MAGAZINE_86X70_AXMC_338LM_10RND = "628120fd5631d45211793c9f", + MAGAZINE_86X70_MK18_10RND = "5fc23426900b1d5091531e15", + MAGAZINE_9X18PM_APS_20RND = "5a17fb03fcdbcbcae668728f", + MAGAZINE_9X18PM_PM_8RND = "5448c12b4bdc2d02308b456f", + MAGAZINE_9X18PM_PM_DRUM_84RND = "55d485be4bdc2d962f8b456f", + MAGAZINE_9X18PM_PP91_20RND = "57d14e1724597714010c3f4b", + MAGAZINE_9X18PM_PP91_30RND = "57d1519e24597714373db79d", + MAGAZINE_9X19_BIG_STICK_24RND = "630769c4962d0247b029dc60", + MAGAZINE_9X19_BIG_STICK_31RND = "630767c37d50ff5e8a1ea71a", + MAGAZINE_9X19_BIG_STICK_33RND = "5a7ad2e851dfba0016153692", + MAGAZINE_9X19_CR_CYL_6RND = "624c3074dbbd335e8e6becf3", + MAGAZINE_9X19_G19X_19RND = "63076701a987397c0816d21b", + MAGAZINE_9X19_GL9_21RND = "5a718da68dc32e000d46d264", + MAGAZINE_9X19_GLOCK_9X19_17RND = "5a718b548dc32e000d46d262", + MAGAZINE_9X19_G_SGMT_50RND = "5a718f958dc32e00094b97e7", + MAGAZINE_9X19_M9A3_17RND = "5cadc2e0ae9215051e1c21e7", + MAGAZINE_9X19_MP443_18RND = "576a5ed62459771e9c2096cb", + MAGAZINE_9X19_MP5_20RND = "5d2f213448f0355009199284", + MAGAZINE_9X19_MP5_30RND = "5926c3b286f774640d189b6b", + MAGAZINE_9X19_MP9_15RND = "5de8e8dafd6b4e6e2276dc32", + MAGAZINE_9X19_MP9_20RND = "5de8ea8ffd6b4e6e2276dc35", + MAGAZINE_9X19_MP9_25RND = "5de8eaadbbaf010b10528a6d", + MAGAZINE_9X19_MP9_30RND = "5de8eac42a78646d96665d91", + MAGAZINE_9X19_MPX_20RND = "5c5db6552e2216001026119d", + MAGAZINE_9X19_MPX_30RND = "5894a05586f774094708ef75", + MAGAZINE_9X19_MPX_DRUM_50RND = "5c5db6742e2216000f1b2852", + MAGAZINE_9X19_MPX_TTI_41RND = "5c5db6652e221600113fba51", + MAGAZINE_9X19_P226_15RND = "56d59948d2720bb7418b4582", + MAGAZINE_9X19_P226_20RND = "5c920e902e221644f31c3c99", + MAGAZINE_9X19_PL15_16RND = "602286df23506e50807090c6", + MAGAZINE_9X19_PP1901_30RND = "599860ac86f77436b225ed1a", + MAGAZINE_9X19_SB7_10RND = "5998529a86f774647f44f421", + MAGAZINE_9X19_SG919_20RND = "5c0673fb0db8340023300271", + MAGAZINE_9X19_SG919_30RND = "5c0672ed0db834001b7353f3", + MAGAZINE_9X19_X5_MP5_50RND = "5a351711c4a282000b1521a4", + MAGAZINE_9X21_SR1MP_18RND = "59f99a7d86f7745b134aa97b", + MAGAZINE_9X21_SR2M_20RND = "633a98eab8b0506e48497c1a", + MAGAZINE_9X21_SR2M_30RND = "62e153bcdb1a5c41971c1b5b", + MAGAZINE_9X33R_CR_CYL_6RND = "619f54a1d25cbd424731fb99", + MAGAZINE_9X39_6L24_10RND = "57838f0b2459774a256959b2", + MAGAZINE_9X39_6L25_20RND = "57838f9f2459774a150289a0", + MAGAZINE_9X39_9A91_20RND = "6450ec2e7da7133e5a09ca96", + MAGAZINE_9X39_SR3M130_30RND = "5a9e81fba2750c00164f6b11", + MAP_CUSTOMS_PLAN = "5798a2832459774b53341029", + MAP_FACTORY_PLAN = "574eb85c245977648157eec3", + MAP_INTERCHANGE_PLAN = "5be4038986f774527d3fae60", + MAP_SHORELINE_HEALTH_RESORT_PLAN = "5a80a29286f7742b25692012", + MAP_SHORELINE_PLAN = "5a8036fb86f77407252ddc02", + MAP_WOODS_PLAN = "5900b89686f7744e704a8747", + MARKOFUNKNOWN_MARK_OF_THE_UNHEARD = "65ddcc9cfa85b9f17d0dfb07", + MARKSMANRIFLE_HK_G28_762X51_MARKSMAN_RIFLE = "6176aca650224f204c1da3fb", + MARKSMANRIFLE_KELTEC_RFB_762X51_RIFLE = "5f2a9575926fd9352339381f", + MARKSMANRIFLE_KNIGHTS_ARMAMENT_COMPANY_SR25_762X51_MARKSMAN_RIFLE = "5df8ce05b11454561e39243b", + MARKSMANRIFLE_REMINGTON_R11_RSASS_762X51_MARKSMAN_RIFLE = "5a367e5dc4a282000e49738f", + MARKSMANRIFLE_SPRINGFIELD_ARMORY_M1A_762X51_RIFLE = "5aafa857e5b5b00018480968", + MARKSMANRIFLE_SVDS_762X54R_SNIPER_RIFLE = "5c46fbd72e2216398b5a8c9c", + MARKSMANRIFLE_SWORD_INTERNATIONAL_MK18_338_LM_MARKSMAN_RIFLE = "5fc22d7c187fea44d52eda44", + MARKSMANRIFLE_VSS_VINTOREZ_9X39_SPECIAL_SNIPER_RIFLE = "57838ad32459774a17445cd2", + MEDICAL_ALUMINUM_SPLINT = "5af0454c86f7746bf20992e8", + MEDICAL_ARMY_BANDAGE = "5751a25924597722c463c472", + MEDICAL_ASEPTIC_BANDAGE = "544fb25a4bdc2dfb738b4567", + MEDICAL_CALOKB_HEMOSTATIC_APPLICATOR = "5e8488fa988a8701445df1e4", + MEDICAL_CAT_HEMOSTATIC_TOURNIQUET = "60098af40accd37ef2175f27", + MEDICAL_CMS_SURGICAL_KIT = "5d02778e86f774203e7dedbe", + MEDICAL_ESMARCH_TOURNIQUET = "5e831507ea0a7c419c2f9bd9", + MEDICAL_IMMOBILIZING_SPLINT = "544fb3364bdc2d34748b456a", + MEDICAL_SANITAR_KIT = "5e99735686f7744bfc4af32c", + MEDICAL_SURV12_FIELD_SURGICAL_KIT = "5d02797c86f774203f38e30a", + MEDKIT_AFAK_TACTICAL_INDIVIDUAL_FIRST_AID_KIT = "60098ad7c2240c0fe85c570a", + MEDKIT_AI2 = "5755356824597772cb798962", + MEDKIT_CAR_FIRST_AID_KIT = "590c661e86f7741e566b646a", + MEDKIT_GRIZZLY_MEDICAL_KIT = "590c657e86f77412b013051d", + MEDKIT_IFAK_INDIVIDUAL_FIRST_AID_KIT = "590c678286f77426c9660122", + MEDKIT_SALEWA_FIRST_AID_KIT = "544fb45d4bdc2dee738b4568", + MEDKIT_SANITARS_FIRST_AID_KIT = "5e99711486f7744bfc4af328", + MONEY_DOLLARS = "5696686a4bdc2da3298b456a", + MONEY_EUROS = "569668774bdc2da2298b4568", + MONEY_GP_COIN = "5d235b4d86f7742e017bc88a", + MONEY_ROUBLES = "5449016a4bdc2d6f028b456f", + MOUNT_AIMPOINT_LRP_MOUNT_FOR_COMPM4_SIGHTS = "5c7d55f52e221644f31bff6a", + MOUNT_AIMPOINT_MICRO_H2_STANDARD = "616554fe50224f204c1da2aa", + MOUNT_AIMPOINT_MICRO_SPACER_HIGH = "58d39b0386f77443380bf13c", + MOUNT_AIMPOINT_MICRO_STANDARD = "58d39d3d86f77445bb794ae7", + MOUNT_AIMPOINT_QRP2_MOUNT_FOR_COMPM4PRO_SIGHTS = "616584766ef05c2ce828ef57", + MOUNT_AIMPOINT_STANDARD_SPACER = "5c7d560b2e22160bc12c6139", + MOUNT_AI_AX50_34MM_SCOPE = "62811f461d5df4475f46a332", + MOUNT_AI_AXMC_ADAPTER_KIT_MEDIUM_LENGTH_RAIL = "628120dd308cb521f87a8fa1", + MOUNT_AI_AXMC_ADAPTER_KIT_SHORT_LENGTH_RAIL = "628120d309427b40ab14e76d", + MOUNT_AI_AXMC_AT_X_TOP_RAIL = "628120c21d5df4475f46a337", + MOUNT_AKS74U_ZENIT_B18 = "57ffb0062459777a045af529", + MOUNT_AK_ZENIT_B12 = "57ffaea724597779f52b3a4d", + MOUNT_ALEXANDER_ARMS_10_INCH_RAIL = "5b30bc285acfc47a8608615d", + MOUNT_ALEXANDER_ARMS_3_INCH_RAIL = "5b30bc165acfc40016387293", + MOUNT_ANPVS14_NOROTOS_DUAL_DOVETAIL = "5a16b93dfcdbcbcae6687261", + MOUNT_ARMASIGHT_VULCAN_UNIVERSAL_BASE = "5b3b6dc75acfc47a8773fb1e", + MOUNT_ARMASIGHT_ZEUS_UNIVERSAL_BASE = "63fc449f5bd61c6cf3784a88", + MOUNT_AXION_KOBRA_DOVETAIL = "591ee00d86f774592f7b841e", + MOUNT_BENELLI_M3_SUPER_90_UPPER_RECEIVER_TOP_RAIL = "625ed7c64d9b6612df732146", + MOUNT_BT_QD_NAR_MOUNT_FOR_AIMPOINT_ACRO = "615d8d878004cc50514c3233", + MOUNT_BURRIS_ARPEPR_30MM_RING_SCOPE = "5b2389515acfc4771e1be0c0", + MOUNT_BURRIS_FASTFIRE_WEAVER_BASE = "577d128124597739d65d0e56", + MOUNT_CNC_GUNS_KEYMOD_2_INCH_RAIL = "623c2f652febb22c2777d8d7", + MOUNT_CNC_GUNS_KEYMOD_4_INCH_RAIL = "623c2f4242aee3103f1c44b7", + MOUNT_CUSTOM_GUNS_HANDGUARD_RAIL = "6086b5392535c57a13424d70", + MOUNT_DANIEL_DEFENSE_25MM_ACCESSORY_RING = "6267c6396b642f77f56f5c1c", + MOUNT_DELTAPOINT_CROSS_SLOT_MOUNT_BASE = "58d2664f86f7747fec5834f6", + MOUNT_DELTATEK_SPRUT_MOUNT_FOR_PUMPACTION_SHOTGUNS = "55d48ebc4bdc2d8c2f8b456c", + MOUNT_ETMI019_SHOTGUN_RAIL = "5dfe14f30b92095fd441edaf", + MOUNT_FN_FIVESEVEN_MK2_RMR = "5d7b6bafa4b93652786f4c76", + MOUNT_FN_P90_EFFEN_90_RECEIVER_RAIL = "5cc7012ae4a949001252b43e", + MOUNT_FN_P90_UPPER_RECEIVER_SIDE_RAIL = "5cc70146e4a949000d73bf6b", + MOUNT_FN_P90_UPPER_RECEIVER_TOP_RAIL = "5cc7015ae4a949001152b4c6", + MOUNT_FN_SCAR_BOTTOM_RAIL = "61816df1d3a39d50044c139e", + MOUNT_FN_SCAR_KINETIC_MREX_65_MLOK_RAIL = "619666f4af1f5202c57a952d", + MOUNT_FN_SCAR_PWS_SRX_RAIL_EXTENSION = "61965d9058ef8c428c287e0d", + MOUNT_FN_SCAR_SIDE_RAIL = "61816dfa6ef05c2ce828f1ad", + MOUNT_GBRS_AIMPOINT_HYDRA_MOUNT_KIT_BLACK = "65392f611406374f82152ba5", + MOUNT_GBRS_AIMPOINT_HYDRA_MOUNT_KIT_FDE = "653931da5db71d30ab1d6296", + MOUNT_GEISSELE_SUPER_PRECISION_30MM_RING_SCOPE = "618b9643526131765025ab35", + MOUNT_GEISSELE_SUPER_PRECISION_30MM_RING_SCOPE_MOUNT_DDC = "618bab21526131765025ab3f", + MOUNT_GEISSELE_SUPER_PRECISION_TOP_RING_CAP = "618b9671d14d6d5ab879c5ea", + MOUNT_GEISSELE_SUPER_PRECISION_TOP_RING_CAP_DDC = "618ba91477b82356f91ae0e8", + MOUNT_GLOCK_AIMTECH_MOUNT_BASE = "5a7ad4af51dfba0013379717", + MOUNT_GLOCK_AIMTECH_TIGER_SHARK_SIGHT = "5a7ad55551dfba0015068f42", + MOUNT_GLOCK_TANGODOWN_AAM01_ACRO_MOUNT_BASE = "615d8da4d3a39d50044c10e8", + MOUNT_HARTMAN_LENOK_70MM_RAIL = "65434a4e4e3a01736a6c9706", + MOUNT_HENSOLDT_RIS_TOP_RAIL = "622efdf8ec80d870d349b4e5", + MOUNT_HEXAGON_MEDIUM_LENGTH_RAIL = "5b800ebc86f774394e230a90", + MOUNT_HEXAGON_MEDIUM_LENGTH_RAIL_ANODIZED_RED = "5b8403a086f7747ff856f4e2", + MOUNT_HEXAGON_SHORT_LENGTH_RAIL = "5b800ed086f7747baf6e2f9e", + MOUNT_HEXAGON_SHORT_LENGTH_RAIL_ANODIZED_RED = "5b84038986f774774913b0c1", + MOUNT_HK_G36_BOTTOM_HANDGUARD_RAIL = "62444cb99f47004c781903eb", + MOUNT_HK_G36_MAGWELL = "622f02437762f55aaa68ac85", + MOUNT_HK_G36_OPTIC_RAIL_WITH_FLIPUP_SIGHTS = "622b3d5cf9cfc87d675d2de9", + MOUNT_HK_G36_SIDE_HANDGUARD_RAIL = "62444cd3674028188b052799", + MOUNT_HK_G36_SIGHT = "622b3c081b89c677a33bcda6", + MOUNT_HK_G36_STANAG_MAGWELL = "622f039199f4ea1a4d6c9a17", + MOUNT_HK_MP5SD_BT_TRIRAIL_RING = "59c63b4486f7747afb151c1c", + MOUNT_HK_MP5_BT_TRIRAIL_RECEIVER = "5a966ec8a2750c00171b3f36", + MOUNT_HK_MP5_MFI_HK_UNIVERSAL_LOW_PROFILE_SCOPE = "5926dad986f7741f82604363", + MOUNT_HK_UMP_BOTTOM_HANDGUARD_RAIL = "5fc53954f8b6a877a729eaeb", + MOUNT_HK_UMP_SIDE_HANDGUARD_RAIL = "5fc5396e900b1d5091531e72", + MOUNT_HK_USP_45_ACP_ELITE_COMPENSATOR = "619621a4de3cdf1d2614a7a7", + MOUNT_HK_USP_45_ACP_MATCH_COMPENSATOR = "619624b26db0f2477964e6b0", + MOUNT_HK_USP_RAIL_ADAPTER = "6196255558ef8c428c287d1c", + MOUNT_IEA_MILOPTICS_KHF_34MM_ONEPIECE_MAG = "5c86592b2e2216000e69e77c", + MOUNT_JP_ENTERPRISES_FLATTOP_30MM_RING_SCOPE = "5a37ca54c4a282000d72296a", + MOUNT_KAC_URX_3_3_INCH_RAIL = "5d133067d7ad1a33013f95b4", + MOUNT_KIBA_ARMS_25MM_ACCESSORY_RING = "57d17e212459775a1179a0f5", + MOUNT_KIBA_ARMS_SHORT_MOUNT_SIGHT_ADAPTER = "5c1cdd302e221602b3137250", + MOUNT_KIBA_ARMS_SPRM_RAIL_MOUNT_FOR_PUMPACTION_SHOTGUNS = "55d48a634bdc2d8b2f8b456a", + MOUNT_KMZ_1P59_DOVETAIL = "5d0a29ead7ad1a0026013f27", + MOUNT_KMZ_1P69_WEAVER = "5d0a29fed7ad1a002769ad08", + MOUNT_KRISS_VECTOR_BOTTOM_RAIL = "5fbb976df9986c4cff3fe5f2", + MOUNT_KRISS_VECTOR_MK5_MODULAR_RAIL = "5fbb978207e8a97d1f0902d3", + MOUNT_KRISS_VECTOR_SIDE_RAIL = "5fce0f9b55375d18a253eff2", + MOUNT_LARUE_LT101_QD_TACTICAL_PICATINNY_RISER = "5c064c400db834001d23f468", + MOUNT_LEAPERS_UTG_25MM_RING_SCOPE = "5dff77c759400025ea5150cf", + MOUNT_LOBAEV_ARMS_30MM_SCOPE = "57c69dd424597774c03b7bbc", + MOUNT_M14_AMEGA_MINI_SCOUT_MOUNT_SYSTEM = "5addbfd15acfc40015621bde", + MOUNT_M14_ARMS_18_SCOPE = "5addbfe15acfc4001a5fc58b", + MOUNT_M14_LEAPERS_UTG_4POINT_LOCKING_DELUXE = "5addbfef5acfc400185c2857", + MOUNT_M14_SAGE_INTERNATIONAL_DCSB = "5addbffe5acfc4001714dfac", + MOUNT_M14_ULTIMAK_M8_FORWARD_OPTIC = "5addbfbb5acfc400194dbcf7", + MOUNT_M14_VLTOR_CASV14_RAIL_SYSTEM = "5addc00b5acfc4001669f144", + MOUNT_M1911A1_NCSTAR_TRIGGER_GUARD = "5ef369b08cef260c0642acaf", + MOUNT_M1911A1_WEIGAND_WEIGATINNY_RAIL = "5ef5d994dfbc9f3c660ded95", + MOUNT_M1A_SOCOM_16_UPPER_PART = "5ab24ef9e5b5b00fe93c9209", + MOUNT_M700_30MM_INTEGRAL_RING_SCOPE = "5bfebc5e0db834001a6694e5", + MOUNT_M700_AB_ARMS_MODX_RAIL = "5cde7b43d7f00c000d36b93e", + MOUNT_M700_EXTENDED_MULTISLOT_WEAVER_RAIL_BASE = "5bfebc530db834001d23eb65", + MOUNT_M700_MAGPUL_PRO_700_CHASSIS_INLINE = "5cdeaca5d7f00c00b61c4b70", + MOUNT_M870_LEAPERS_UTG_PRO_MTU028SG_RAIL = "5a7893c1c585673f2b5c374d", + MOUNT_M870_MESA_TACTICAL_MAGAZINE_CLAMP = "5a789261c5856700186c65d3", + MOUNT_M870_XS_SHOTRAIL_RAIL_WITH_GHOST_RING_REAR_SIGHT = "5a78948ec5856700177b1124", + MOUNT_MAGPUL_MLOK_25_INCH_RAIL = "5b7be47f5acfc400170e2dd2", + MOUNT_MAGPUL_MLOK_41_INCH_RAIL = "5b7be4895acfc400170e2dd5", + MOUNT_MAGPUL_MLOK_CANTILEVER = "6269220d70b6c02e665f2635", + MOUNT_MAGPUL_MLOK_OFFSET_LIGHT = "6269545d0e57f218e4548ca2", + MOUNT_MOSIN_RIFLE_AIM_SPORTS_MNG_RAIL = "5bc5a372d4351e44f824d17f", + MOUNT_MOSIN_RIFLE_AIM_SPORTS_TRIRAIL = "5bbdb811d4351e45020113c7", + MOUNT_MOSIN_RIFLE_ARBALET_PATRIOT_KW_RAIL = "5d024f5cd7ad1a04a067e91a", + MOUNT_MOSIN_RIFLE_KOCHETOV = "5b3f7bf05acfc433000ecf6b", + MOUNT_MOSSBERG_590A1_TACTICAL_RAIL = "5eeb2ff5ea4f8b73c827350b", + MOUNT_MP133153_TAKTIKA_TULA_12003_STOCK_ADAPTER = "5bfe7fb30db8340018089fed", + MOUNT_MP155_ULTIMA_SHORT_RAIL = "607ea812232e5a31c233d53c", + MOUNT_MP155_ULTIMA_TOP_RAIL = "60785ce5132d4d12c81fd918", + MOUNT_MP18_SIGHT = "61f804acfcba9556ea304cb8", + MOUNT_MP443_GRACH_ZENIT_B8 = "576a7c512459771e796e0e17", + MOUNT_MP9_BOTTOM_RAIL = "5de8fbf2b74cd90030650c79", + MOUNT_MP9_SIDE_RAIL = "5de8fc0b205ddc616a6bc51b", + MOUNT_MPX_GEN1_HANDGUARD_2_INCH_RAIL = "58a56f8d86f774651579314c", + MOUNT_MPX_GEN1_HANDGUARD_4_INCH_RAIL = "58a5c12e86f7745d585a2b9e", + MOUNT_NCSTAR_MPR45_BACKUP = "5649a2464bdc2d91118b45a8", + MOUNT_NIGHTFORCE_MAGMOUNT_30MM_RING_SCOPE = "5b3b99265acfc4704b4a1afb", + MOUNT_NIGHTFORCE_MAGMOUNT_34MM_RING_SCOPE = "5aa66a9be5b5b0214e506e89", + MOUNT_NIGHTFORCE_MAGMOUNT_34MM_RING_SCOPE_MOUNT_WITH_RUGGEDIZED_ACCESSORY_PLATFORM = "5aa66c72e5b5b00016327c93", + MOUNT_NOROTOS_TITANIUM_ADVANCED_TACTICAL = "5a16b8a9fcdbcb00165aa6ca", + MOUNT_NPZ_1P781_DOVETAIL = "618a75c9a3884f56c957ca1b", + MOUNT_OPSCORE_PICATINNY_RAIL_ADAPTER = "5a398b75c4a282000a51a266", + MOUNT_OPSCORE_SINGLE_CLAMP_RAIL_ADAPTER = "5a398ab9c4a282000c5a9842", + MOUNT_OPSKS_DOVETAIL = "587e08ee245977446b4410cf", + MOUNT_OPSKS_UPPER_BAND = "634f05a21f9f536910079b56", + MOUNT_ORSIS_T5000M_LONG_LENGTH_RAIL = "5df35ea9c41b2312ea3334d8", + MOUNT_ORSIS_T5000M_MEDIUM_LENGTH_RAIL = "5df35eb2b11454561e3923e2", + MOUNT_ORSIS_T5000M_SCOPE = "5df35e970b92095fd441e4d2", + MOUNT_P226_BRIDGE_SIGHT = "5b3a08b25acfc4001754880c", + MOUNT_P226_TRIJICON_RMR = "5a32aa0cc4a28232996e405f", + MOUNT_PK_ZENIT_B50_16MM_TOP = "6492c6dd60fdb10a020621a2", + MOUNT_PK_ZENIT_B50_66MM_TOP = "6492c8bba6e68e06fb0bae87", + MOUNT_PNV10T_DOVETAIL_ADAPTER = "5c0695860db834001b735461", + MOUNT_PP91_KEDR_ROTOR_43_RIS = "57ee59b42459771c7b045da5", + MOUNT_PRECISION_REFLEX_HANDGUARD_BOTTOM_RAIL = "6388c4ac8d895f557a0c6515", + MOUNT_PRECISION_REFLEX_HANDGUARD_LONG_TOP_RAIL = "6388c5d19c00405f4717c0f0", + MOUNT_PRECISION_REFLEX_HANDGUARD_SHORT_SIDE_RAIL = "6388c4478d895f557a0c6512", + MOUNT_PU_35X_RING_SCOPE = "5b3f7c005acfc4704b4a1de8", + MOUNT_PVS7_WILCOX_ADAPTER = "5c11046cd174af02a012e42b", + MOUNT_RECKNAGEL_ERATAC_30MM_RING_SCOPE = "6171407e50224f204c1da3c5", + MOUNT_RECKNAGEL_ERATAC_34MM_RING_SCOPE = "61713cc4d8e3106d9806c109", + MOUNT_RECKNAGEL_ERATAC_SUNSHADE_MOUNT_FOR_AIMPOINT_T1_SIGHTS = "61714b2467085e45ef140b2c", + MOUNT_REMINGTON_RAHG_2_INCH_RAIL = "5c0102aa0db834001b734ba1", + MOUNT_REMINGTON_RAHG_4_INCH_RAIL = "5c0102b20db834001d23eebc", + MOUNT_REPTILIA_ROF90_RMR_MOUNT_FOR_GEISSELE_SCOPE_MOUNTS = "618b9682a3884f56c957ca78", + MOUNT_REPTILIA_ROF90_RMR_MOUNT_FOR_GEISSELE_SCOPE_MOUNTS_DDC = "618ba92152ecee1505530bd3", + MOUNT_RFB_HANDGUARD_RAIL = "5f2aa493cd375f14e15eea72", + MOUNT_RFB_SCOPE_RAIL = "5f2aa49f9b44de6b1b4e68d4", + MOUNT_RPK16_HANDGUARD_RAIL = "5beecbb80db834001d2c465e", + MOUNT_SAG_AK_DOVETAIL_SIDE = "63d114019e35b334d82302f7", + MOUNT_SAG_BIT_LOW_PROFILE_DOVETAIL_SIDE = "638db77630c4240f9e06f8b6", + MOUNT_SIG_ALPHA4_30MM_RING_SCOPE = "6567e751a715f85433025998", + MOUNT_SIG_SAUER_ROMEO_SIGHT = "5b31163c5acfc400153b71cb", + MOUNT_SKS_CHOATE_SCOPE = "6415d33eda439c6a97048b5b", + MOUNT_SKS_LEAPERS_UTG_SOCOM_RAIL = "593d1fa786f7746da62d61ac", + MOUNT_SKS_TAPCO_INTRAFUSE_CHASSIS_LOWER_RAIL = "653ed19d22e1ef3d9002c328", + MOUNT_SKS_UPPER_BAND = "634f04d82e5def262d0b30c6", + MOUNT_SR1MP_QUAD_RAIL = "5a27bad7c4a282000b15184b", + MOUNT_SR1MP_SINGLE_RAIL = "5a27b281c4a28200741e1e52", + MOUNT_SR1MP_SOUND_SUPPRESSOR = "5a27b3d0c4a282000d721ec1", + MOUNT_SR2M_SHORT_SIDE_RAIL = "62ed189fb3608410ef5a2bfc", + MOUNT_SR2M_SIDE_RAIL = "62ed1921b3608410ef5a2c04", + MOUNT_SR2M_ZENIT_B17 = "62e281349ecd3f493f6df954", + MOUNT_STEYR_AUG_A3_M1_HIGH_SIGHT = "62e7c8f91cd3fde4d503d690", + MOUNT_STEYR_AUG_A3_M1_LOW_SIGHT = "62ebba1fb658e07ef9082b5a", + MOUNT_STRIKE_INDUSTRIES_KEYMOD_4_INCH_RAIL = "5a9d6d00a2750c5c985b5305", + MOUNT_STRIKE_INDUSTRIES_KEYMOD_6_INCH_RAIL = "5a9d6d13a2750c00164f6b03", + MOUNT_STRIKE_INDUSTRIES_TRAX_BRIDGE_RAIL = "5a9d6d21a2750c00137fa649", + MOUNT_SVDS_UPPER_BAND = "5c471c2d2e22164bef5d077f", + MOUNT_SVD_CAA_DRG_L1_BARREL_MOUNT_RAIL = "5e569a132642e66b0b68015c", + MOUNT_SVD_CAA_XD_RGL_RECEIVER = "5e569a2e56edd02abe09f280", + MOUNT_SVD_MODERNIZATION_KIT_TOP_RAIL = "5e569a0156edd02abe09f27d", + MOUNT_SVD_SAG_LOW_PROFILE_SIDE = "5dff8db859400025ea5150d4", + MOUNT_SVT40_TOKAREV_PU = "641dc35e19604f20c800be18", + MOUNT_TOZ106_DOVETAIL = "5c6162682e22160010261a2b", + MOUNT_TOZ106_RAIL_SCOPE = "5c61627a2e22160012542c55", + MOUNT_TRIJICON_RMR_HIGH_PROFILE = "5a33b652c4a28232996e407c", + MOUNT_TRIJICON_RMR_LOW_PROFILE = "5a33b2c9c4a282000c5a9511", + MOUNT_TRIJICON_RMR_MOUNT_FOR_ACOG_SCOPES = "5a33bab6c4a28200741e22f8", + MOUNT_TRIJICON_TA51_SIGHT = "59db7eed86f77461f8380365", + MOUNT_TROY_QARS_32_INCH_RAIL = "5b4736a986f774040571e998", + MOUNT_TROY_QARS_42_INCH_RAIL = "5b4736b986f77405cb415c10", + MOUNT_UM_TACTICAL_UM3_PISTOL_SIGHT = "5a7b4900e899ef197b331a2a", + MOUNT_UNV_DLOCIRD_SIGHT = "5a1ead28fcdbcb001912fa9f", + MOUNT_VLTOR_CASV_2_INCH_RAIL = "5b7be4575acfc400161d0832", + MOUNT_VLTOR_CASV_4_INCH_RAIL = "5b7be4645acfc400170e2dcc", + MOUNT_VLTOR_CASV_5_INCH_RAIL = "5b7be46e5acfc400170e2dcf", + MOUNT_VLTOR_CASV_KEYMOD_2_INCH_RAIL = "59e0bdb186f774156f04ce82", + MOUNT_VLTOR_CASV_KEYMOD_4_INCH_RAIL = "59e0be5d86f7742d48765bd2", + MOUNT_VLTOR_CASV_KEYMOD_6_INCH_RAIL = "59e0bed186f774156f04ce84", + MOUNT_VOMZ_PILAD_04302_DOVETAIL = "57acb6222459771ec34b5cb0", + MOUNT_VPO102_ARBALET = "609a4b4fe2ff132951242d04", + MOUNT_VPO215_GORNOSTAY_SCOPE_RAIL = "5de6558e9f98ac2bc65950fc", + MOUNT_VSSVAL_TOZ_6P29M = "59eb7ebe86f7740b373438ce", + MOUNT_VSSVAL_ZENIT_B3_MOUNT_COMBO = "5a9fc7e6a2750c0032157184", + MOUNT_VSSVAL_ZENIT_B3_RING = "57a3459f245977764a01f703", + MOUNT_ZENIT_B13V_KLASSIKA_DOVETAIL_RAIL_PLATFORM = "5c90c3622e221601da359851", + MOUNT_ZENIT_B13_KLASSIKA_DOVETAIL_RAIL_PLATFORM = "5c61a40d2e2216001403158d", + MOUNT_ZENIT_KR2_OLD_GEN = "646f6322f43d0c5d62063715", + MUZZLECOMBO_9A91_HANDGUARD_RETAINER = "64527a263d52156624001fd7", + MUZZLECOMBO_AI_AXMC_THREAD_PROTECTION_CAP = "628120621d5df4475f46a335", + MUZZLECOMBO_AKM_762X39_KIBA_ARMS_308_MUZZLE_DEVICE_ADAPTER = "615d8e9867085e45ef1409c6", + MUZZLECOMBO_AK_762X39_TAKTIKA_TULA_MUZZLE_ADAPTER = "5a0abb6e1526d8000a025282", + MUZZLECOMBO_AK_CNC_WARRIOR_556X45_MUZZLE_DEVICE_ADAPTER = "5e21ca18e4d47f0da15e77dd", + MUZZLECOMBO_AWC_PSR_MUZZLE_BRAKE_PROTECTOR = "612e0e04568c120fdd294258", + MUZZLECOMBO_GEMTECH_ONE_DIRECT_THREAD_MOUNT_ADAPTER = "5c7954d52e221600106f4cc7", + MUZZLECOMBO_GK01_12GA_COMPENSATOR = "5580239d4bdc2de7118b4583", + MUZZLECOMBO_GK02_12GA_MUZZLE_BRAKE = "58272d7f2459774f6311ddfd", + MUZZLECOMBO_GLOCK_9X19_DOUBLE_DIAMOND_THREAD_PROTECTOR = "5a6b592c8dc32e00094b97bf", + MUZZLECOMBO_GLOCK_9X19_LONE_WOLF_ALPHAWOLF_THREAD_PROTECTOR = "5a6b585a8dc32e5a9c28b4f1", + MUZZLECOMBO_GLOCK_SAI_9X19_THREAD_PROTECTOR = "5a6b59a08dc32e000b452fb7", + MUZZLECOMBO_HK_MP5_3LUG_THREAD_PROTECTOR = "5926e16e86f7742f5a0f7ecb", + MUZZLECOMBO_HK_MP5_NAVY_STYLE_3LUG_SUPPRESSOR_ADAPTER = "5c0000c00db834001a6697fc", + MUZZLECOMBO_HK_USP_TACTICAL_THREAD_PROTECTOR = "6194f1f918a3974e5e7421e4", + MUZZLECOMBO_KRISS_VECTOR_45_ACP_THREAD_PROTECTION_CAP = "5fb6548dd1409e5ca04b54f9", + MUZZLECOMBO_KRISS_VECTOR_9X19_THREAD_PROTECTION_CAP = "5fbbc34106bde7524f03cbe9", + MUZZLECOMBO_LANTAC_BMD_BLAST_MITIGATION_DEVICE_A3_DIRECT_THREAD_ADAPTER = "5cf78496d7f00c065703d6ca", + MUZZLECOMBO_M700_THREAD_PROTECTION_CAP = "5d270b3c8abbc3105335cfb8", + MUZZLECOMBO_M700_THREAD_PROTECTION_CAP_STAINLESS_STEEL = "5d270ca28abbc31ee25ee821", + MUZZLECOMBO_M9A3_THREAD_PROTECTION_CAP = "5cadc390ae921500126a77f1", + MUZZLECOMBO_ME_CYLINDER_12GA_MUZZLE_ADAPTER = "5c0111ab0db834001966914d", + MUZZLECOMBO_MOSIN_RIFLE_KIBA_ARMS_762X54R_CUSTOM_THREAD_ADAPTER = "5cf79389d7f00c10941a0c4d", + MUZZLECOMBO_MOSIN_RIFLE_TIGER_ROCK_762X51_THREAD_ADAPTER = "5cf79599d7f00c10875d9212", + MUZZLECOMBO_MOSIN_RIFLE_WEAPON_TUNING_762X39_THREAD_ADAPTER = "5cf67a1bd7f00c06585fb6f3", + MUZZLECOMBO_MP9_9X19_SOUND_SUPPRESSOR_MOUNT = "5de8f237bbaf010b10528a70", + MUZZLECOMBO_MTS25512_12GA_CHOKE = "619d36da53b4d42ee724fae4", + MUZZLECOMBO_P226_THREAD_PROTECTION_CAP = "587de5ba2459771c0f1e8a58", + MUZZLECOMBO_PP9101_KEDRB_THREADED_SUPPRESSOR_ADAPTER = "57f3c7e024597738ea4ba286", + MUZZLECOMBO_REMINGTON_TACTICAL_CHOKE_12GA = "560838c94bdc2d77798b4569", + MUZZLECOMBO_RFB_THREAD_PROTECTION_CAP = "5f2aa4464b50c14bcf07acdb", + MUZZLECOMBO_RFB_THREAD_SPACER = "5f2aa43ba9b91d26f20ae6d2", + MUZZLECOMBO_RPD_BARREL_THREAD_PROTECTOR = "6513f0f5e63f29908d0ffab8", + MUZZLECOMBO_SIG_SAUER_TAPERLOK_762X51300_BLK_MUZZLE_ADAPTER = "5fbc22ccf24b94483f726483", + MUZZLECOMBO_SILENCERCO_HYBRID_46_DIRECT_THREAD_MOUNT_ADAPTER = "59bffc1f86f77435b128b872", + MUZZLECOMBO_SILENCERCO_OMEGA_45K_DIRECT_THREAD_MOUNT_ADAPTER = "5fc4b992187fea44d52edaa9", + MUZZLECOMBO_SILENCERCO_OMEGA_45K_PISTON_MOUNT_ADAPTER = "5fc4b97bab884124df0cd5e3", + MUZZLECOMBO_SILENCERCO_SALVO_12_CHOKE_ADAPTER = "5b363dea5acfc4771e1c5e7e", + MUZZLECOMBO_SILENCERCO_SALVO_12_THREAD_ADAPTER = "5b363e1b5acfc4771e1c5e80", + MUZZLECOMBO_SKS_WEAPON_TUNING_762X39_THREAD_ADAPTER = "5cf67cadd7f00c065a5abab7", + MUZZLECOMBO_SOK12_THREAD_PROTECTION_TUBE = "576167ab2459773cad038c43", + MUZZLECOMBO_SR2M_9X21_HAND_STOPPER = "62e2a754b6c0ee2f230cee0f", + MUZZLECOMBO_STEYR_AUG_RAT_WORX_556X45_MUZZLE_DEVICE_ADAPTER = "630f27f04f3f6281050b94d7", + MUZZLECOMBO_SVDS_ROTOR_43_THREAD_ADAPTER = "5e01e9e273d8eb11426f5bc3", + MUZZLECOMBO_TROMIX_MONSTER_CLAW_12GA_MUZZLE_BRAKE = "59fb137a86f7740adb646af1", + MUZZLECOMBO_VPO215_GORNOSTAY_THREAD_PROTECTION_CAP = "5de6556a205ddc616a6bc4f7", + NIGHTVISION_ANPVS14_NIGHT_VISION_MONOCULAR = "57235b6f24597759bf5a30f1", + NIGHTVISION_ARMASIGHT_N15_NIGHT_VISION_GOGGLES = "5c066e3a0db834001b7353f0", + NIGHTVISION_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", + NIGHTVISION_PNV10T_NIGHT_VISION_GOGGLES = "5c0696830db834001d23f5da", + OPTICSCOPE_BELOMO_PSO1M21_4X24_SCOPE = "576fd4ec2459777f0b518431", + OPTICSCOPE_BELOMO_PSO1M2_4X24_SCOPE = "5c82343a2e221644f31c0611", + OPTICSCOPE_BELOMO_PSO1_4X24_SCOPE = "5c82342f2e221644f31c060e", + OPTICSCOPE_BURRIS_FULLFIELD_TAC30_14X24_30MM_RIFLESCOPE = "5b2388675acfc4771e1be0be", + OPTICSCOPE_EOTECH_VUDU_16X24_30MM_RIFLESCOPE = "5b3b99475acfc432ff4dcbee", + OPTICSCOPE_HENSOLDT_FF_416X56_34MM_RIFLESCOPE = "56ea70acd2720b844b8b4594", + OPTICSCOPE_KMZ_1P59_310X_RIFLESCOPE = "5d0a3a58d7ad1a669c15ca14", + OPTICSCOPE_KMZ_1P69_310X_RIFLESCOPE = "5d0a3e8cd7ad1a6f6a3d35bd", + OPTICSCOPE_LEUPOLD_MARK_4_LR_6520X50_30MM_RIFLESCOPE = "5a37cb10c4a282329a73b4e7", + OPTICSCOPE_MARCH_TACTICAL_324X42_FFP_30MM_RIFLESCOPE = "57c5ac0824597754771e88a9", + OPTICSCOPE_NCSTAR_ADO_P4_SNIPER_39X42_RIFLESCOPE = "5dfe6104585a0c3e995c7b82", + OPTICSCOPE_NIGHTFORCE_ATACR_735X56_34MM_RIFLESCOPE = "5aa66be6e5b5b0214e506e97", + OPTICSCOPE_NIGHTFORCE_NXS_2510X24_SCOPE = "544a3d0a4bdc2d1b388b4567", + OPTICSCOPE_NPZ_1P781_28X_SCOPE = "618a75f0bd321d49084cd399", + OPTICSCOPE_NPZ_USP1_TYULPAN_4X_SCOPE = "5cf638cbd7f00c06595bc936", + OPTICSCOPE_PAG17_SCOPE = "5d53f4b7a4b936793d58c780", + OPTICSCOPE_PU_35X_RIFLESCOPE = "5b3f7c1c5acfc40dc5296b1d", + OPTICSCOPE_SCHMIDT_BENDER_PM_II_18X24_30MM_RIFLESCOPE = "617151c1d92c473c770214ab", + OPTICSCOPE_SCHMIDT_BENDER_PM_II_312X50_34MM_RIFLESCOPE = "61714eec290d254f5e6b2ffc", + OPTICSCOPE_SCHMIDT_BENDER_PM_II_525X56_34MM_RIFLESCOPE = "62850c28da09541f43158cca", + OPTICSCOPE_SIG_TANGO6T_16X24_30MM_RIFLESCOPE = "6567e7681265c8a131069b0f", + OPTICSCOPE_VOMZ_PILAD_4X32_254MM_RIFLESCOPE = "5dff772da3651922b360bf91", + OPTICSCOPE_VORTEX_RAZOR_HD_GEN2_16X24_30MM_RIFLESCOPE = "618ba27d9008e4636a67f61d", + PISTOLGRIP_9A91_PISTOL_GRIP = "6450f21a3d52156624001fcf", + PISTOLGRIP_AK12_PISTOL_GRIP = "5beec8ea0db834001a6f9dbf", + PISTOLGRIP_AKM_BAKELITE_PISTOL_GRIP = "59e62cc886f77440d40b52a1", + PISTOLGRIP_AKM_WOODEN_PISTOL_GRIP = "5a0071d486f77404e23a12b2", + PISTOLGRIP_AK_AEROKNOX_SCORPIUS_PISTOL_GRIP = "5f6341043ada5942720e2dc5", + PISTOLGRIP_AK_BAKELITE_PISTOL_GRIP = "59e6318286f77444dd62c4cc", + PISTOLGRIP_AK_BAKELITE_PISTOL_GRIP_6P1_SB8V = "5649ad3f4bdc2df8348b4585", + PISTOLGRIP_AK_BAKELITE_PISTOL_GRIP_6P4_SB9 = "57e3dba62459770f0c32322b", + PISTOLGRIP_AK_CG101_ARTYPE_PISTOL_GRIP_ADAPTER = "648ae3e356c6310a830fc291", + PISTOLGRIP_AK_CUSTOM_ARMS_AGS74_PRO_SNIPER_KIT_PISTOL_GRIP = "6087e663132d4d12c81fd96b", + PISTOLGRIP_AK_FAB_DEFENSE_AGR47_PISTOL_GRIP = "623c3be0484b5003161840dc", + PISTOLGRIP_AK_KGB_MG47_PISTOL_GRIP = "5cf54404d7f00c108840b2ef", + PISTOLGRIP_AK_KGB_MG47_PISTOL_GRIP_ANODIZED_RED = "5e2192a498a36665e8337386", + PISTOLGRIP_AK_MAGPUL_MOE_PISTOL_GRIP_BLACK = "5b30ac585acfc433000eb79c", + PISTOLGRIP_AK_MISSION_FIRST_TACTICAL_ENGAGE_AK47_PISTOL_GRIP = "63f4da90f31d4a33b87bd054", + PISTOLGRIP_AK_POLYMER_PISTOL_GRIP_6P1_SB8 = "5649ade84bdc2d1b2b8b4587", + PISTOLGRIP_AK_PUFGUN_SGM2_PISTOL_GRIP = "651580dc71a4f10aec4b6056", + PISTOLGRIP_AK_STRIKE_INDUSTRIES_ENHANCED_PISTOL_GRIP_BLACK = "5cf50850d7f00c056e24104c", + PISTOLGRIP_AK_STRIKE_INDUSTRIES_ENHANCED_PISTOL_GRIP_FDE = "5cf508bfd7f00c056e24104e", + PISTOLGRIP_AK_TANGODOWN_BATTLE_GRIP_PISTOL_GRIP = "628a664bccaab13006640e47", + PISTOLGRIP_AK_TANGODOWN_BATTLE_GRIP_PISTOL_GRIP_FDE = "628c9ab845c59e5b80768a81", + PISTOLGRIP_AK_TAPCO_SAWSTYLE_PISTOL_GRIP_BLACK = "5947f92f86f77427344a76b1", + PISTOLGRIP_AK_TAPCO_SAWSTYLE_PISTOL_GRIP_FDE = "5947fa2486f77425b47c1a9b", + PISTOLGRIP_AK_US_PALM_PISTOL_GRIP = "5c6bf4aa2e2216001219b0ae", + PISTOLGRIP_AK_ZENIT_RK3_PISTOL_GRIP = "5649ae4a4bdc2d1b2b8b4588", + PISTOLGRIP_APS_BAKELITE_SIDEPIECES = "5a17fc70fcdbcb0176308b3d", + PISTOLGRIP_AR15_AEROKNOX_ORION_PISTOL_GRIP = "63f5feead259b42f0b4d6d0f", + PISTOLGRIP_AR15_COLT_A2_PISTOL_GRIP = "55d4b9964bdc2d1d4e8b456e", + PISTOLGRIP_AR15_DAMAGE_INDUSTRIES_ECS_PISTOL_GRIP_FDE = "571659bb2459771fb2755a12", + PISTOLGRIP_AR15_DLG_TACTICAL_DLG123_PISTOL_GRIP = "602e71bd53a60014f9705bfa", + PISTOLGRIP_AR15_F1_FIREARMS_SKELETONIZED_STYLE_1_PISTOL_GRIP = "6113c3586c780c1e710c90bc", + PISTOLGRIP_AR15_F1_FIREARMS_SKELETONIZED_STYLE_2_PC_PISTOL_GRIP = "6113cc78d3a39d50044c065a", + PISTOLGRIP_AR15_F1_FIREARMS_SKELETONIZED_STYLE_2_PISTOL_GRIP = "6113cce3d92c473c770200c7", + PISTOLGRIP_AR15_HERA_ARMS_HG15_PISTOL_GRIP = "5cc9bcaed7f00c011c04e179", + PISTOLGRIP_AR15_HK_BATTLE_GRIP_BEAVERTAIL_PISTOL_GRIP = "5bb20e0ed4351e3bac1212dc", + PISTOLGRIP_AR15_HK_BATTLE_GRIP_BEAVERTAIL_PISTOL_GRIP_RAL_8000 = "6193dcd0f8ee7e52e4210a28", + PISTOLGRIP_AR15_HK_BATTLE_GRIP_PISTOL_GRIP = "5bb20e18d4351e00320205d5", + PISTOLGRIP_AR15_HK_ERGO_PSG1_STYLE_PISTOL_GRIP = "5d025cc1d7ad1a53845279ef", + PISTOLGRIP_AR15_HK_V2_PISTOL_GRIP = "5c6d7b3d2e221600114c9b7d", + PISTOLGRIP_AR15_MAGPUL_MIAD_PISTOL_GRIP_FDE = "5a339805c4a2826c6e06d73d", + PISTOLGRIP_AR15_MAGPUL_MOE_PISTOL_GRIP_BLACK = "55802f5d4bdc2dac148b458f", + PISTOLGRIP_AR15_MAGPUL_MOE_PISTOL_GRIP_FDE = "5d15cf3bd7ad1a67e71518b2", + PISTOLGRIP_AR15_NAROH_ARMS_GRALS_PISTOL_GRIP = "59db3a1d86f77429e05b4e92", + PISTOLGRIP_AR15_SIG_M400_REDUCED_ANGLE_PISTOL_GRIP_COYOTE_TAN = "652911675ae2ae97b80fdf3c", + PISTOLGRIP_AR15_STARK_AR_RIFLE_GRIP_BLACK = "59db3acc86f7742a2c4ab912", + PISTOLGRIP_AR15_STARK_AR_RIFLE_GRIP_FDE = "59db3b0886f77429d72fb895", + PISTOLGRIP_AR15_TACTICAL_DYNAMICS_HEXGRIP_PISTOL_GRIP = "615d8faecabb9b7ad90f4d5d", + PISTOLGRIP_AR15_TACTICAL_DYNAMICS_SKELETONIZED_PISTOL_GRIP = "5b07db875acfc40dc528a5f6", + PISTOLGRIP_AS_VAL_PISTOL_GRIP = "57c44fa82459772d2d75e415", + PISTOLGRIP_AS_VAL_ROTOR_43_PISTOL_GRIP_BUFFER_TUBE = "5a69a2ed8dc32e000d46d1f1", + PISTOLGRIP_BENELLI_M3_TELESCOPIC_STOCK_PISTOL_GRIP = "6259c3d8012d6678ec38eeb8", + PISTOLGRIP_CHIAPPA_RHINO_PLASTIC_PISTOL_GRIP = "619f4ab2d25cbd424731fb95", + PISTOLGRIP_CHIAPPA_RHINO_WOODEN_PISTOL_GRIP = "619f4bffd25cbd424731fb97", + PISTOLGRIP_GLOCK_PACHMAYR_TACTICAL_GRIP_GLOVE = "5a7b4960e899ef197b331a2d", + PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_BLACK = "57c55efc2459772d2c6271e7", + PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_FDE = "57af48872459771f0b2ebf11", + PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_GHILLIE_EARTH = "57c55f092459772d291a8463", + PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_GHILLIE_GREEN = "57c55f112459772d28133310", + PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_OLIVE_DRAB = "57c55f172459772d27602381", + PISTOLGRIP_KS23M_PISTOL_GRIP = "5e848d99865c0f329958c83b", + PISTOLGRIP_M14_SAGE_INTERNATIONAL_M14ALCS_MOD0_PISTOL_GRIP = "5addc7db5acfc4001669f279", + PISTOLGRIP_M1911A1_SIDE_GRIPS = "5e81c6bf763d9f754677beff", + PISTOLGRIP_M1911_KIBA_ARMS_GENEBURN_CUSTOM_SIDE_GRIPS = "626a9cb151cb5849f6002890", + PISTOLGRIP_M1911_PACHMAYR_AMERICAN_LEGEND_GRIP_423 = "5ef366938cef260c0642acad", + PISTOLGRIP_M45A1_MILTAC_GVT_G10_SIDE_GRIPS = "5f3e778efcd9b651187d7201", + PISTOLGRIP_M700_MAGPUL_PRO_700_PISTOL_GRIP = "5cdeac5cd7f00c000f261694", + PISTOLGRIP_M870_FAB_DEFENSE_AGR870_PISTOL_GRIP = "5bfe86a20db834001d23e8f7", + PISTOLGRIP_M9A3_POLYMER_SIDE_GRIPS = "5cadc431ae921500113bb8d5", + PISTOLGRIP_MCX_PISTOL_GRIP = "5fbcbd6c187fea44d52eda14", + PISTOLGRIP_MDR_PISTOL_GRIP_BLACK = "5dcbd6dddbd3d91b3e5468de", + PISTOLGRIP_MDR_PISTOL_GRIP_FDE = "5c48a2c22e221602b313fb6c", + PISTOLGRIP_MOSIN_RIFLE_TACFIRE_PISTOL_GRIP = "5bbde41ed4351e003562b038", + PISTOLGRIP_MP155_ULTIMA_PISTOL_GRIP = "606eef46232e5a31c233d500", + PISTOLGRIP_MP443_GRACH_POLYMER_PISTOL_GRIP = "576a63cd2459771e796e0e11", + PISTOLGRIP_MPX_PISTOL_GRIP = "5894a51286f77426d13baf02", + PISTOLGRIP_ORSIS_T5000M_PISTOL_GRIP = "5df38a5fb74cd90030650cb6", + PISTOLGRIP_P226_AXELSON_TACTICAL_MK25_PISTOL_GRIP = "5bffec120db834001c38f5fa", + PISTOLGRIP_P226_COMBAT_PISTOL_GRIP_FDE = "57c9a89124597704ee6faec1", + PISTOLGRIP_P226_EMPEROR_SCORPION_PISTOL_GRIP = "5c0006470db834001a6697fe", + PISTOLGRIP_P226_HOGUE_G10_CHAIN_LINK_PISTOL_GRIP = "5bffef760db8340019668fe4", + PISTOLGRIP_P226_HOGUE_RUBBERIZED_PISTOL_GRIP = "5b39ffbd5acfc47a8773fb06", + PISTOLGRIP_P226_POLYMER_PISTOL_GRIP_BLACK = "56d5a2bbd2720bb8418b456a", + PISTOLGRIP_P226_STAINLESS_ELITE_WOODEN_PISTOL_GRIP = "5c00076d0db834001d23ee1f", + PISTOLGRIP_PB_BAKELITE_SIDE_GRIPS = "56e05a6ed2720bd0748b4567", + PISTOLGRIP_PK_PISTOL_GRIP = "646371779f5f0ea59a04c204", + PISTOLGRIP_PK_PISTOL_GRIP_BLACK = "64cbad529f7cf7f75c077fd5", + PISTOLGRIP_PM_BAKELITE_SIDE_GRIPS = "6374a7e7417239a7bf00f042", + PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP = "637784c5f7b3f4ac1a0d1a9a", + PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP_OLIVE_DRAB = "648afce7ec6bb25b2608defb", + PISTOLGRIP_PM_TACTIC_KIT_PISTOL_GRIP = "637b6d610aef6cfc5e02dd14", + PISTOLGRIP_PP1901_VITYAZ_PISTOL_GRIP = "5998517986f7746017232f7e", + PISTOLGRIP_PP91_KEDR_POLYMER_PISTOL_GRIP = "57d152ec245977144076ccdf", + PISTOLGRIP_RPD_WOODEN_PISTOL_GRIP = "6513f13a8cb24472490ee32f", + PISTOLGRIP_RSH12_PISTOL_GRIP = "633ec8e4025b096d320a3b1e", + PISTOLGRIP_SA58_FAB_DEFENSE_AGFAL_PISTOL_GRIP = "5b7d679f5acfc4001a5c4024", + PISTOLGRIP_SA58_PISTOL_GRIP = "5b7d678a5acfc4001a5c4022", + PISTOLGRIP_SA58_SAWSTYLE_PISTOL_GRIP_BLACK = "5b099b965acfc400186331e6", + PISTOLGRIP_SKSVZ58_FAB_DEFENSE_AG58_PISTOL_GRIP = "5d023784d7ad1a049d4aa7f2", + PISTOLGRIP_SKS_TAPCO_INTRAFUSE_SAWSTYLE_PISTOL_GRIP = "5afd7e445acfc4001637e35a", + PISTOLGRIP_SR2M_PISTOL_GRIP = "637b9c37b7e3bc41b21ce71a", + PISTOLGRIP_SR2M_PISTOL_GRIP_BLACK = "637ba29bf7ca6372bf2613db", + PISTOLGRIP_SVDS_LYNX_ARMS_AKSERIES_PISTOL_GRIP_ADAPTER = "6516b129609aaf354b34b3a8", + PISTOLGRIP_SVDS_PISTOL_GRIP = "5c471be12e221602b66cd9ac", + PISTOLGRIP_TOZ106_002_PISTOL_GRIP = "5a38eecdc4a282329a73b512", + PISTOLGRIP_TT_HOGUELIKE_RUBBER_GRIP = "5c0684e50db834002a12585a", + PISTOLGRIP_TT_ORNATED_SIDE_GRIPS = "5b3cadf35acfc400194776a0", + PISTOLGRIP_TT_PMLASER_TT206_SIDE_GRIPS_WITH_LASER_SIGHT = "5bffcf7a0db83400232fea79", + PISTOLGRIP_TT_RAZOR_ARMS_RUBBER_GRIP = "5c079ec50db834001966a706", + PISTOLGRIP_TT_SIDE_GRIPS = "571a282c2459771fb2755a69", + PISTOL_20X1MM_TOY_GUN = "66015072e9f84d5680039678", + PISTOL_APB_9X18PM_SILENCED_MACHINE = "5abccb7dd8ce87001773e277", + PISTOL_BERETTA_M9A3_9X19 = "5cadc190ae921500103bb3b6", + PISTOL_COLT_M1911A1_45_ACP = "5e81c3cbac2bb513793cdc75", + PISTOL_COLT_M45A1_45_ACP = "5f36a0e5fbf956000b716b65", + PISTOL_FN_FIVESEVEN_MK2_57X28 = "5d3eb3b0a4b93615055e84d2", + PISTOL_FN_FIVESEVEN_MK2_57X28_PISTOL_FDE = "5d67abc1a4b93614ec50137f", + PISTOL_GLOCK_17_9X19 = "5a7ae0c351dfba0017554310", + PISTOL_GLOCK_18C_9X19_MACHINE = "5b1fa9b25acfc40018633c01", + PISTOL_GLOCK_19X_9X19 = "63088377b5cd696784087147", + PISTOL_HK_USP_45_ACP = "6193a720f8ee7e52e42109ed", + PISTOL_LEBEDEV_PL15_9X19 = "602a9740da11d6478d5a06dc", + PISTOL_MAKAROV_PM_9X18PM = "5448bd6b4bdc2dfc2f8b4569", + PISTOL_MAKAROV_PM_T_9X18PM = "579204f224597773d619e051", + PISTOL_PB_9X18PM_SILENCED = "56e0598dd2720bb5668b45a6", + PISTOL_SERDYUKOV_SR1MP_GYURZA_9X21 = "59f98b4986f7746f546d2cef", + PISTOL_SIG_P226R_9X19 = "56d59856d2720bd8418b456a", + PISTOL_STECHKIN_APS_9X18PM_MACHINE = "5a17f98cfcdbcb0980087290", + PISTOL_TT33_762X25_TT = "571a12c42459771f627b58a0", + PISTOL_TT33_762X25_TT_PISTOL_GOLDEN = "5b3b713c5acfc4330140bd8d", + PISTOL_YARYGIN_MP443_GRACH_9X19 = "576a581d2459771e7b1bc4f1", + POCKETS_1X3 = "60c7272c204bc17802313365", + POCKETS_1X4 = "557ffd194bdc2d28148b457f", + POCKETS_1X4_SPECIAL = "627a4e6b255f7527fb05a0f6", + POCKETS_1X4_TUE = "65e080be269cbd5c5005e529", + POCKETS_2X3 = "64cbd95a29b9b4283e216ff5", + POCKETS_LARGE = "5af99e9186f7747c447120b8", + QUEST_ACCOUNTANTS_JOURNAL = "638cbb0f7f97256fac16167a", + QUEST_ACCOUNTANTS_NOTES = "63a943cead5cc12f22161ff7", + QUEST_AG_GUITAR_PICK = "638df4cc7b560b03794a18d2", + QUEST_ARENA_POSTER_BISON = "664a5775f3d3570fba06be64", + QUEST_ARENA_POSTER_EASY_MONEY = "664b69e8e1238e506d3630af", + QUEST_ARENA_POSTER_KILLA = "664b69c5a082271bc46c4e11", + QUEST_BANK_CASE = "590dde5786f77405e71908b2", + QUEST_BLOOD_SAMPLE = "5a687e7886f7740c4a5133fb", + QUEST_BOTTLE_OF_LE_JEAN_WINE = "6582bd252b50c61c565828e2", + QUEST_CADASTRAL_REGISTRY_RECORDS = "657acb2ac900be5902191ac9", + QUEST_CARBON_CASE = "5910922b86f7747d96753483", + QUEST_CHEFS_DIARY = "64f69b4267e11a7c6206e010", + QUEST_CHEMCONT_SAMPLES = "63927b29c115f907b14700b9", + QUEST_CHEMICAL_CONTAINER_1 = "5b43237186f7742f3a4ab252", + QUEST_CHEMICAL_CONTAINER_2 = "5b4c81a086f77417d26be63f", + QUEST_CHEMICAL_CONTAINER_3 = "5b4c81bd86f77418a75ae159", + QUEST_CLOTHES_DESIGN_HANDBOOK_PART_1 = "5ae9a3f586f7740aab00e4e6", + QUEST_CLOTHES_DESIGN_HANDBOOK_PART_2 = "5ae9a4fc86f7746e381e1753", + QUEST_COMPROMISING_INFORMATION_ON_REF = "664fce7a90294949fe2d81cb", + QUEST_ENCRYPTED_MESSAGE = "5d3ec50586f774183a607442", + QUEST_FLASHDRIVE_CAR_SERVICE = "638cbb3ba63f1b49be6a300e", + QUEST_FLASHDRIVE_TERRAGROUP_EMPLOYEE = "5eff135be0d3331e9d282b7b", + QUEST_FLASHDRIVE_WATCHING_YOU = "638e9d5536b3b72c944e2fc7", + QUEST_FLASHDRIVE_WET_JOB_PT_4 = "5a29357286f77409c705e025", + QUEST_FLASH_DRIVE_WITH_FAKE_INFO = "5c12301c86f77419522ba7e4", + QUEST_FLYERS4 = "664b69f3a082271bc46c4e13", + QUEST_GOLDEN_ZIBBO_LIGHTER = "5939a00786f7742fe8132936", + QUEST_GOSHAN_CARGO_MANIFESTS = "5ae9a0dd86f7742e5f454a05", + QUEST_HARD_DRIVE = "661666458c2aa9cb1602503b", + QUEST_HARD_DRIVE_TERRAGROUP_SCIENTIST = "6575a6ca8778e96ded05a802", + QUEST_HDD_SURVEILLANCE = "638dfc803083a019d447768e", + QUEST_HDD_TOP_SECRET = "628393620d8524273e7eb028", + QUEST_HDD_WET_JOB = "5a29276886f77435ed1b117c", + QUEST_HOUSING_JOURNAL = "638e0057ab150a5f56238960", + QUEST_IDEA_CARGO_MANIFESTS = "5ae9a1b886f77404c8537c62", + QUEST_INFORMANT_JOURNAL = "63989ced706b793c7d60cfef", + QUEST_JOURNAL = "64f07f7726cfa02c506f8ac0", + QUEST_KEY_TO_THE_CLOSED_PREMISES_OF_THE_HEALTH_RESORT = "5a0448bc86f774736f14efa8", + QUEST_LETTER_GOT_MAIL = "638cbc68a63f1b49be6a3010", + QUEST_LETTER_HERMIT = "61904c9df62c89219a56e034", + QUEST_LETTER_POSTMAN_PAT = "591093bb86f7747caa7bb2ee", + QUEST_LETTER_TERRAGROUP = "5939e9b286f77462a709572c", + QUEST_LIGHTKEEPER_INTEL = "6398a072e301557ae24cec92", + QUEST_LIGHTKEEPER_INTEL_2 = "638e0752ab150a5f56238962", + QUEST_LIGHTKEEPER_INTEL_2_FORGED = "638e06c4b8bac37a110ed56d", + QUEST_LIGHTKEEPER_INTEL_FORGED = "6398a0861c712b1e1d4dadf1", + QUEST_MARKED_OPHTHALMOSCOPE = "5efdaf6de6a30218ed211a48", + QUEST_MBT_INTEGRATED_NAVIGATION_SYSTEM = "60c080eb991ac167ad1c3ad4", + QUEST_MEDICAL_RECORD = "6393262086e646067c176aa2", + QUEST_MEDICAL_RECORD_1 = "608c22a003292f4ba43f8a1a", + QUEST_MEDICAL_RECORD_2 = "60a3b5b05f84d429b732e934", + QUEST_MILITARY_DOCUMENTS_1 = "60915994c49cf53e4772cc38", + QUEST_MILITARY_DOCUMENTS_2 = "60a3b6359c427533db36cf84", + QUEST_MILITARY_DOCUMENTS_3 = "60a3b65c27adf161da7b6e14", + QUEST_MOTOR_CONTROLLER_1 = "5af04c0b86f774138708f78e", + QUEST_MOTOR_CONTROLLER_2 = "5b4c72b386f7745b453af9c0", + QUEST_MOTOR_CONTROLLER_3 = "5b4c72c686f77462ac37e907", + QUEST_NOTE_FOR_THERAPIST = "5ae9a34d86f7740aab00e4de", + QUEST_OLI_CARGO_MANIFESTS = "5ae9a18586f7746e381e16a3", + QUEST_OLI_CARGO_ROUTE_DOCUMENTS = "5ae9a25386f7746dd946e6d9", + QUEST_PACKAGE_OF_GRAPHICS_CARDS = "5ac620eb86f7743a8e6e0da0", + QUEST_PARAMEDICS_GPHONE_X = "64f09c02b63b74469b6c149f", + QUEST_PHOTO_ALBUM = "5d357d6b86f7745b606e3508", + QUEST_PICTURE_1 = "64e73909cd54ef0580746af3", + QUEST_PICTURE_10 = "64e74a534d49d23b2c39d31b", + QUEST_PICTURE_11 = "64e74a5ac2b4f829615ec336", + QUEST_PICTURE_12 = "64e74a64aac4cd0a7264ecdf", + QUEST_PICTURE_2 = "64e74a186393886f74114a96", + QUEST_PICTURE_3 = "64e74a1faac4cd0a7264ecd9", + QUEST_PICTURE_4 = "64e74a274d49d23b2c39d317", + QUEST_PICTURE_5 = "64e74a2fc2b4f829615ec332", + QUEST_PICTURE_6 = "64e74a35aac4cd0a7264ecdb", + QUEST_PICTURE_7 = "64e74a3d4d49d23b2c39d319", + QUEST_PICTURE_8 = "64e74a44c2b4f829615ec334", + QUEST_PICTURE_9 = "64e74a4baac4cd0a7264ecdd", + QUEST_PUMPING_STATION_OPERATION_REPORT = "619268ad78f4fa33f173dbe5", + QUEST_RADIO_TRANSMITTER_BODY = "6399f54b0a36db13c823ad21", + QUEST_SECRET_COMPONENT = "64f5b4f71a5f313cb144c06c", + QUEST_SECURED_TAPE = "6398a4cfb5992f573c6562b3", + QUEST_SECURE_FLASH_DRIVE = "59f9ddae86f77407ab46e047", + QUEST_SECURE_FLASH_DRIVE_V3 = "6331bb0d1aa9f42b804997a6", + QUEST_SECURE_FOLDER_0013 = "5939e5a786f77461f11c0098", + QUEST_SECURE_FOLDER_0022 = "591092ef86f7747bb8703422", + QUEST_SECURE_FOLDER_0031 = "5938188786f77474f723e87f", + QUEST_SECURE_FOLDER_0048 = "593965cf86f774087a77e1b6", + QUEST_SECURE_FOLDER_0052 = "5938878586f7741b797c562f", + QUEST_SECURE_FOLDER_0060 = "5a6860d886f77411cd3a9e47", + QUEST_SINGLEAXIS_FIBER_OPTIC_GYROSCOPE_1 = "5af04e0a86f7743a532b79e2", + QUEST_SINGLEAXIS_FIBER_OPTIC_GYROSCOPE_2 = "5b4c72fb86f7745cef1cffc5", + QUEST_SKIER_AND_PEACEKEEPER_CORRESPONDENCE = "6614238e0d240a5f5d0f679d", + QUEST_SLIDERKEY_SECURE_FLASH_DRIVE = "590c62a386f77412b0130255", + QUEST_STOLEN_MILITARY_DOCUMENTS = "61a00bcb177fb945751bbe6a", + QUEST_SURGERY_KIT_MARKED_WITH_A_BLUE_SYMBOL = "5efdafc1e70b5e33f86de058", + QUEST_SYRINGE_WITH_A_CHEMICAL = "593a87af86f774122f54a951", + QUEST_T90M_COMMANDER_CONTROL_PANEL = "609267a2bb3f46069c3e6c7d", + QUEST_TOUGHBOOK_CARGO = "5a29284f86f77463ef3db363", + QUEST_TOUGHBOOK_SEASIDE_VACATION = "619252352be33f26043400a7", + QUEST_UAV_SAS_DISK_1 = "5a294d7c86f7740651337cf9", + QUEST_UAV_SAS_DISK_2 = "5a294d8486f774068638cd93", + QUEST_UNHEARD_LAPTOP = "661421c7c1f2f548c50ee649", + QUEST_UNHEARD_LAPTOP_2 = "661423200d240a5f5d0f679b", + QUEST_UNHEARD_PHONE = "6614217b6d9d5abcad0ff098", + QUEST_UNHEARD_PHONE_2 = "6614230055afee107f05e998", + QUEST_WATCH_BRONZE = "5937fd0086f7742bf33fc198", + QUEST_WATCH_GOLD = "590de92486f77423d9312a33", + QUEST_WATCH_SILVER = "5937fc6786f7742cab753590", + QUEST_WATER_PUMP_OPERATION_DATA = "619268de2be33f2604340159", + RADIOTRANSMITTER_DIGITAL_SECURE_DSP_RADIO_TRANSMITTER = "62e910aaf957f2915e0a5e36", + RANDOMLOOTCONTAINER_ARENA_GEARCRATE_BLUE_OPEN = "665730fa4de4820934746c48", + RANDOMLOOTCONTAINER_ARENA_GEARCRATE_GREEN_OPEN = "6658876e146af22739040fad", + RANDOMLOOTCONTAINER_ARENA_GEARCRATE_VIOLET_OPEN = "6658291eefd94e2d665b14a4", + RANDOMLOOTCONTAINER_ARENA_JEWELRYCRATE_BLUE_OPEN = "66573310a1657263d816a139", + RANDOMLOOTCONTAINER_ARENA_JEWELRYCRATE_GREEN_OPEN = "665886abdaadd1069736c539", + RANDOMLOOTCONTAINER_ARENA_JEWELRYCRATE_VIOLET_OPEN = "665829a6efd94e2d665b14a8", + RANDOMLOOTCONTAINER_ARENA_JUNKCRATE_BLUE_OPEN = "665732f4464c4b4ba4670fa9", + RANDOMLOOTCONTAINER_ARENA_JUNKCRATE_GREEN_OPEN = "6658892e6e007c6f33662002", + RANDOMLOOTCONTAINER_ARENA_JUNKCRATE_VIOLET_OPEN = "66582972ac60f009f270d2aa", + RANDOMLOOTCONTAINER_ARENA_WEAPONCRATE_BLUE_OPEN = "665732e7ac60f009f270d1ef", + RANDOMLOOTCONTAINER_ARENA_WEAPONCRATE_GREEN_OPEN = "665888282c4a1b73af576b77", + RANDOMLOOTCONTAINER_ARENA_WEAPONCRATE_VIOLET_OPEN = "665829424de4820934746ce6", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_01 = "64897ffc3656831810043165", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_02 = "64898e9db18e646e992aba47", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_03 = "648990314b4d2b31b63a46fc", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_04 = "648996987063b903ff4b8561", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_05 = "6489981f7063b903ff4b8565", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_06 = "64899a35fc093676bb0f57e3", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_07 = "64899ec0a236de328b12db52", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_08 = "64899f4189de40533661a0c0", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_09 = "6489a0a4fc493c59d15fec05", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_10 = "6489a233a236de328b12db56", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_11 = "6489a344fc493c59d15fec0f", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_12 = "6489a7d87063b903ff4b85cc", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_13 = "6489a97645f9ca4ba51c4dd0", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_14 = "6489aa584b6fc03d00374e59", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_15 = "6489ab9645f9ca4ba51c4dd7", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_16 = "6489b2b131a2135f0d7d0fcb", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_17 = "6489b73cebac5a4a1b73cab7", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_18 = "6489b88bcf0cd80b7e749069", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_19 = "6489b91dd0c36c0a4925c4b4", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_20 = "6489b99eebac5a4a1b73cabc", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_21 = "6489ba157c07471efa3e03b4", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_22 = "6489ba92a74e43447b64d5e2", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_23 = "6489bbd6d0c36c0a4925c4b8", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_24 = "6489bd7b79295b4f753d486a", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_25 = "6489bed4a53c8c047c3dc361", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_26 = "6489bfa844d98e01bc4c420e", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_27 = "6489c03c8bc5233fdc78e788", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_28 = "6489c0508bc5233fdc78e78c", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_29 = "6489c0df7c07471efa3e03b8", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_30 = "6489c0f731a2135f0d7d0fd5", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_31 = "6489c12f8bc5233fdc78e790", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_32 = "6489c164a53c8c047c3dc365", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_33 = "6489c200cf0cd80b7e74906d", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_34 = "6489c2aad0c36c0a4925c4bc", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_35 = "6489c30331a2135f0d7d0fd9", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_36 = "6489c46eebac5a4a1b73cac0", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_37 = "6489c5cb44d98e01bc4c4212", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_38 = "6489c65cd0c36c0a4925c4c0", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_39 = "6489c753a74e43447b64d5e6", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_40 = "6489c80e7c07471efa3e03bc", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_41 = "6489c8a1a53c8c047c3dc369", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_42 = "6489c8dba53c8c047c3dc36d", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_43 = "6489c99f7c07471efa3e03c0", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_44 = "6489ca66d0c36c0a4925c4c4", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_45 = "6489cad98bc5233fdc78e794", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_46 = "6489cb4fa74e43447b64d5ea", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_47 = "6489cc4379295b4f753d486e", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_48 = "6489cca131a2135f0d7d0fdd", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_49 = "6489d812cf0cd80b7e749071", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_50 = "6489d89debac5a4a1b73caf7", + RANDOMLOOTCONTAINER_NEW_YEAR_GIFT_BIG = "63a897c6b1ff6e29734fcc95", + RANDOMLOOTCONTAINER_NEW_YEAR_GIFT_MEDIUM = "63a898a328e385334e0640a5", + RANDOMLOOTCONTAINER_NEW_YEAR_GIFT_SMALL = "63a8970d7108f713591149f5", + RANDOMLOOTCONTAINER_PUMPKIN_RAND_LOOT_CONTAINER = "634959225289190e5e773b3b", + RANDOMLOOTCONTAINER_RANDOM_LOOT_CONTAINER = "62f10b79e7ee985f386b2f47", + RANDOMLOOTCONTAINER_RANDOM_LOOT_QUEST_CONTAINER = "633ffb5d419dbf4bea7004c6", + RANGEFINDER_VORTEX_RANGER_1500 = "61605e13ffa6e502ac5e7eef", + RECEIVER_AI_AXMC_338_LM_CHASSIS = "6281204f308cb521f87a8f9b", + RECEIVER_AI_AXMC_UPPER = "62811fbf09427b40ab14e767", + RECEIVER_AK12_DUST_COVER = "649ec2f3961514b22506b111", + RECEIVER_AK545_SAG_RAILED_DUST_COVER = "628b9be6cff66b70c002b14c", + RECEIVER_AK74M_DUST_COVER_6P34_01 = "5ac50da15acfc4001718d287", + RECEIVER_AK74_DUST_COVER_6P20_01 = "5649af094bdc2df8348b4586", + RECEIVER_AKM_DUST_COVER_6P1_01 = "59d6507c86f7741b846413a2", + RECEIVER_AKS74UB_DUST_COVER = "5839a7742459773cf9693481", + RECEIVER_AKS74U_DUST_COVER_6P26_SB7 = "57dc334d245977597164366f", + RECEIVER_AKS74U_LEGAL_ARSENAL_PILIGRIM_RAILED_DUST_COVER = "655cb6b5d680a544f30607fa", + RECEIVER_AK_AKADEMIA_BASTION_DUST_COVER = "5d2c76ed48f03532f2136169", + RECEIVER_AK_FAB_DEFENSE_PDC_DUST_COVER = "5d2c770c48f0354b4a07c100", + RECEIVER_AK_TWS_DOG_LEG_RAIL_DUST_COVER = "5d2c772c48f0355d95672c25", + RECEIVER_AK_ZENIT_B33_DUST_COVER = "5649af884bdc2d1b2b8b4589", + RECEIVER_AR15_ADAR_215_556X45_UPPER = "5c0e2f26d174af02a9625114", + RECEIVER_AR15_AEROKNOX_AX15_556X45_UPPER = "63f5ed14534b2c3d5479a677", + RECEIVER_AR15_NOVESKE_GEN3_556X45_UPPER = "5c07a8770db8340023300450", + RECEIVER_AR15_VLTOR_MUR1S_556X45_UPPER = "59bfe68886f7746004266202", + RECEIVER_AS_VAL_DUST_COVER = "57c44f4f2459772d2c627113", + RECEIVER_FAL_STANDARD_DUST_COVER = "5b7d6c105acfc40015109a5f", + RECEIVER_FN_FIVESEVEN_MK2_PISTOL_SLIDE = "5d3eb44aa4b93650d64e4979", + RECEIVER_FN_P90_57X28_UPPER = "5cc70102e4a949035e43ba74", + RECEIVER_FN_P90_EFFEN_90_57X28_UPPER = "5cc700ede4a949033c734315", + RECEIVER_FN_PS90_57X28_UPPER = "5cf7acfcd7f00c1084477cf2", + RECEIVER_FN_SCARH_762X51_UPPER = "6165adcdd3a39d50044c120f", + RECEIVER_FN_SCARH_762X51_UPPER_RECEIVER_FDE = "6165aeedfaa1272e431521e3", + RECEIVER_FN_SCARL_556X45_UPPER = "618405198004cc50514c3594", + RECEIVER_FN_SCARL_556X45_UPPER_RECEIVER_FDE = "618426d96c780c1e710c9b9f", + RECEIVER_GLOCK_17_MOS_PISTOL_SLIDE = "615d8dbd290d254f5e6b2ed6", + RECEIVER_GLOCK_17_PISTOL_SLIDE = "5a6f5e048dc32e00094b97da", + RECEIVER_GLOCK_18C_PISTOL_SLIDE = "5b1faa0f5acfc40dc528aeb5", + RECEIVER_GLOCK_19X_PISTOL_SLIDE = "63075cc5962d0247b029dc2a", + RECEIVER_GLOCK_LONE_WOLF_ALPHAWOLF_CUSTOM_PISTOL_SLIDE = "5a7033908dc32e000a311392", + RECEIVER_GLOCK_LONE_WOLF_ALPHAWOLF_PISTOL_SLIDE = "5a702d198dc32e000b452fc3", + RECEIVER_GLOCK_MOTO_CUT_PISTOL_SLIDE = "5a9685b1a2750c0032157104", + RECEIVER_GLOCK_POLYMER80_PS9_PISTOL_SLIDE = "5a7afa25e899ef00135e31b0", + RECEIVER_GLOCK_VIPER_CUT_PISTOL_SLIDE = "5a6f5f078dc32e00094b97dd", + RECEIVER_GLOCK_ZEV_TECH_HEX_GEN3_RMR_PISTOL_SLIDE = "5a71e22f8dc32e00094b97f4", + RECEIVER_GLOCK_ZEV_TECH_HEX_SPARTAN_RMR_PISTOL_SLIDE = "5a71e4f48dc32e001207fb26", + RECEIVER_HK_416A5_556X45_UPPER = "5bb20d53d4351e4502010a69", + RECEIVER_HK_G28_762X51_UPPER = "61713a8fd92c473c770214a4", + RECEIVER_HK_MP5K_9X19_UPPER = "5d2f261548f03576f500e7b7", + RECEIVER_HK_MP5SD_9X19_UPPER = "5926f2e086f7745aae644231", + RECEIVER_HK_MP5_9X19_UPPER = "5926c0df86f77462f647f764", + RECEIVER_HK_USP_45_ACP_PISTOL_SLIDE = "6193d382ed0429009f543e65", + RECEIVER_HK_USP_ELITE_45_ACP_PISTOL_SLIDE = "6194f5d418a3974e5e7421ef", + RECEIVER_HK_USP_EXPERT_45_ACP_PISTOL_SLIDE = "6194f5722d2c397d6600348f", + RECEIVER_HK_USP_MATCH_45_ACP_PISTOL_SLIDE = "6194f5a318a3974e5e7421eb", + RECEIVER_HK_USP_TACTICAL_45_ACP_PISTOL_SLIDE = "6194f41f9fb0c665d5490e75", + RECEIVER_M1911A1_PISTOL_SLIDE = "5e81edc13397a21db957f6a1", + RECEIVER_M45A1_PISTOL_SLIDE = "5f3e7823ddc4f03b010e2045", + RECEIVER_M4A1_556X45_UPPER = "55d355e64bdc2d962f8b4569", + RECEIVER_M9A3_PISTOL_SLIDE = "5cadc55cae921500103bb3be", + RECEIVER_MCX_GEN1_300_BLK_UPPER = "5fbcc3e4d6fa9c00c571bb58", + RECEIVER_MCX_SPEAR_68X51_UPPER = "6529119424cbe3c74a05e5bb", + RECEIVER_MK18_338_LM_UPPER = "5fc278107283c4046c581489", + RECEIVER_MK47_RESOLUTE_762X39_UPPER = "606587a88900dc2d9a55b659", + RECEIVER_MOLOT_ARMS_AKMTYPE_DUST_COVER = "59e6449086f7746c9f75e822", + RECEIVER_MP9N_9X19_UPPER = "5de8e67c4a9f347bc92edbd7", + RECEIVER_MP9_9X19_UPPER = "5e0090f7e9dc277128008b93", + RECEIVER_MPX_GEN1_9X19_UPPER = "5894a5b586f77426d2590767", + RECEIVER_OPSKS_DUST_COVER = "634f06262e5def262d0b30ca", + RECEIVER_P226R_MK25_PISTOL_SLIDE = "56d5a407d2720bb3418b456b", + RECEIVER_P226_AXELSON_TACTICAL_MK25_PISTOL_SLIDE = "5bffe7c50db834001d23ece1", + RECEIVER_P226_EMPEROR_SCORPION_PISTOL_SLIDE = "5c010a700db834001d23ef5d", + RECEIVER_P226_LEGION_FULL_SIZE_PISTOL_SLIDE = "5c0125fc0db834001a669aa3", + RECEIVER_P226_STAINLESS_ELITE_PISTOL_SLIDE = "5c0009510db834001966907f", + RECEIVER_PL15_PISTOL_SLIDE = "60228924961b8d75ee233c32", + RECEIVER_PM_PISTOL_SLIDE = "6374a822e629013b9c0645c8", + RECEIVER_PP1901_VITYAZSN_DUST_COVER = "59985a6c86f77414ec448d17", + RECEIVER_PP1901_VITYAZ_DUST_COVER = "59985a8086f77414ec448d1a", + RECEIVER_PPSH41_DUST_COVER = "5ea03e5009aa976f2e7a514b", + RECEIVER_RD704_DUST_COVER = "628a665a86cbd9750d2ff5e5", + RECEIVER_RPK16_DUST_COVER = "5beec91a0db834001961942d", + RECEIVER_SA58_EXTREME_DUTY_DUST_COVER = "5b099bb25acfc400186331e8", + RECEIVER_SKS_DUST_COVER = "634f05ca517ccc8a960fc748", + RECEIVER_SKS_LEAPERS_UTG_PRO_MTU017_RECEIVER_COVER_MOUNT = "6415c694da439c6a97048b56", + RECEIVER_SOK12_DUST_COVER_SB02 = "57616c112459773cce774d66", + RECEIVER_SR25_762X51_UPPER = "5df8e4080b92095fd441e594", + RECEIVER_SR2M_DUST_COVER = "62e27a7865f0b1592a49e17b", + RECEIVER_STEYR_AUG_A3_556X45 = "62e7c72df68e7a0676050c77", + RECEIVER_STM9_9X19_UPPER = "602e63fb6335467b0c5ac94d", + RECEIVER_SVDS_CUSTOM_CUT_DUST_COVER = "5dfce88fe9dc277128008b2e", + RECEIVER_SVDS_DUST_COVER = "5c471bd12e221602b4129c3a", + RECEIVER_SVT_DUST_COVER = "64119cdbdcf48d656f0aa272", + RECEIVER_TX15_556X45_LIGHTWEIGHT_UPPER = "5d4405aaa4b9361e6a4e6bd3", + RECEIVER_VPO101_VEPRHUNTER_DUST_COVER = "5c503d0a2e221602b542b7ef", + RECEIVER_VSS_DUST_COVER = "578395402459774a256959b5", + REPAIRKITS_BODY_ARMOR_REPAIR_KIT = "591094e086f7747caa7bb2ef", + REPAIRKITS_WEAPON_REPAIR_KIT = "5910968f86f77425cf569c32", + REVOLVER_CHIAPPA_RHINO_200DS_9X19 = "624c2e8614da335f1e034d8c", + REVOLVER_CHIAPPA_RHINO_50DS_357 = "61a4c8884f95bc3b2c5dc96f", + REVOLVER_MILKOR_M32A1_MSGL_40MM_GRENADE_LAUNCHER = "6275303a9f372d6ea97f9ec7", + REVOLVER_MTS25512_12GA_SHOTGUN = "60db29ce99594040e04c4a27", + REVOLVER_RSH12_127X55 = "633ec7c2a6918cb895019c6c", + SECURE_CONTAINER_ALPHA = "544a11ac4bdc2d470e8b456a", + SECURE_CONTAINER_BETA = "5857a8b324597729ab0a0e7d", + SECURE_CONTAINER_BOSS = "5c0a794586f77461c458f892", + SECURE_CONTAINER_EPSILON = "59db794186f77448bc595262", + SECURE_CONTAINER_GAMMA = "5857a8bc2459772bad15db29", + SECURE_CONTAINER_GAMMA_TUE = "665ee77ccf2d642e98220bca", + SECURE_CONTAINER_KAPPA = "5c093ca986f7740a1867ab12", + SECURE_THETA_SECURE_CONTAINER = "664a55d84a90fc2c8a6305c9", + SECURE_TOURNAMENT_SECURED_CONTAINER = "64f6f4c5911bcdfe8b03b0dc", + SECURE_WAIST_POUCH = "5732ee6a24597719ae0c0281", + SHOTGUN_BENELLI_M3_SUPER_90_12GA_DUALMODE = "6259b864ebedf17603599e88", + SHOTGUN_MOSSBERG_590A1_12GA_PUMPACTION = "5e870397991fd70db46995c8", + SHOTGUN_MP133_12GA_PUMPACTION = "54491c4f4bdc2db1078b4568", + SHOTGUN_MP153_12GA_SEMIAUTOMATIC = "56dee2bdd2720bc8328b4567", + SHOTGUN_MP155_12GA_SEMIAUTOMATIC = "606dae0ab0e443224b421bb7", + SHOTGUN_MP18_762X54R_SINGLESHOT_RIFLE = "61f7c9e189e6fb1a5e3ea78d", + SHOTGUN_MP431C_12GA_DOUBLEBARREL = "5580223e4bdc2d1c128b457f", + SHOTGUN_MP43_12GA_SAWEDOFF_DOUBLEBARREL = "64748cb8de82c85eaf0a273a", + SHOTGUN_REMINGTON_MODEL_870_12GA_PUMPACTION = "5a7828548dc32e5a9c28b516", + SHOTGUN_SAIGA12K_VER10_12GA_SEMIAUTOMATIC = "576165642459773c7a400233", + SHOTGUN_TOZ106_20GA_BOLTACTION = "5a38e6bac4a2826c6e06d79b", + SHOTGUN_TOZ_KS23M_23X75MM_PUMPACTION = "5e848cc2988a8701445df1e8", + SIGNALPISTOL_ZID_SP81_26X75_SIGNAL_PISTOL = "620109578d82e67e7911abf2", + SILENCER_9A91_9X39_SOUND_SUPPRESSOR = "64527a3a7da7133e5a09ca99", + SILENCER_AAC_762SDN6_MULTICALIBER_SOUND_SUPPRESSOR = "5a34fe59c4a282000b1521a2", + SILENCER_AAC_ILLUSION_9_9X19_SOUND_SUPPRESSOR = "5c7e8fab2e22165df16b889b", + SILENCER_AI_338_LM_TACTICAL_SOUND_MODERATOR = "62811fa609427b40ab14e765", + SILENCER_AK12_545X39_SOUND_SUPPRESSOR = "64c196ad26a15b84aa07132f", + SILENCER_AK74_HEXAGON_545X39_SOUND_SUPPRESSOR = "593d493f86f7745e6b2ceb22", + SILENCER_AK74_HEXAGON_WAFFLEMAKER_545X39_SOUND_SUPPRESSOR = "615d8f8567085e45ef1409ca", + SILENCER_AK74_TGPA_545X39_SOUND_SUPPRESSOR = "564caa3d4bdc2d17108b458e", + SILENCER_AKM_HEXAGON_762X39_SOUND_SUPPRESSOR = "593d489686f7745c6255d58a", + SILENCER_AKM_PBS1_762X39_SOUND_SUPPRESSOR = "5a0d63621526d8dba31fe3bf", + SILENCER_AKM_ZENIT_DTK4M_762X39_SOUND_SUPPRESSOR = "59fb257e86f7742981561852", + SILENCER_AKS74U_PBS4_545X39_SOUND_SUPPRESSOR = "57ffb0e42459777d047111c5", + SILENCER_AK_HEXAGON_DTKP_MK2_762X39_SOUND_SUPPRESSOR = "5e208b9842457a4a7a33d074", + SILENCER_ALPHA_DOG_ALPHA_9_9X19_SOUND_SUPPRESSOR = "5a33a8ebc4a282000c5a950d", + SILENCER_APB_9X18PM_SOUND_SUPPRESSOR = "5abcc328d8ce8700194394f3", + SILENCER_AR15_GRIFFIN_ARMAMENT_M4SDK_556X45_SOUND_SUPPRESSOR = "638612b607dfed1ccb7206ba", + SILENCER_ASH12_127X55_SOUND_SUPPRESSOR = "5caf187cae92157c28402e43", + SILENCER_AS_VAL_9X39_INTEGRAL_BARRELSUPPRESSOR = "57c44dd02459772d2e0ae249", + SILENCER_AWC_THOR_PSR_XL_MULTICALIBER_SOUND_SUPPRESSOR = "63877c99e785640d436458ea", + SILENCER_CO_HYBRID_46_MULTICALIBER_SOUND_SUPPRESSOR = "59bffbb386f77435b379b9c2", + SILENCER_CO_OMEGA_45K_45_ACP_SOUND_SUPPRESSOR = "5fc4b9b17283c4046c5814d7", + SILENCER_CO_OSPREY_9_9X19_SOUND_SUPPRESSOR = "5a32a064c4a28200741e22de", + SILENCER_CO_SAKER_ASR_556_556X45_SOUND_SUPPRESSOR = "60926df0132d4d12c81fd9df", + SILENCER_CO_SALVO_12_12GA_SOUND_SUPPRESSOR = "5b363dd25acfc4001a598fd2", + SILENCER_CO_SPARROW_22_SOUND_SUPPRESSOR = "54490a4d4bdc2dbc018b4573", + SILENCER_DANIEL_DEFENSE_WAVE_QD_SOUND_SUPPRESSOR = "5cff9e84d7ad1a049e54ed55", + SILENCER_FN_P90_ATTENUATOR_57X28_SOUND_SUPPRESSOR = "5cebec00d7f00c065c53522a", + SILENCER_GEMTECH_ONE_MULTICALIBER_SOUND_SUPPRESSOR = "5c7955c22e221644f31bfd5e", + SILENCER_GEMTECH_SFN57_57X28_SOUND_SUPPRESSOR = "5d3ef698a4b9361182109872", + SILENCER_GLOCK_9X19_FISCHER_DEVELOPMENT_FD917_SOUND_SUPPRESSOR = "5a7ad74e51dfba0015068f45", + SILENCER_HEXAGON_12K_12GA_SOUND_SUPPRESSOR = "59c0ec5b86f77435b128bfca", + SILENCER_HK_G28_BT_QD_762X51_SOUND_SUPPRESSOR = "6171367e1cb55961fa0fdb36", + SILENCER_HK_MP5SD_9X19_SOUND_SUPPRESSOR = "5926d33d86f77410de68ebc0", + SILENCER_HK_MP7_BT_ROTEX_2_46X30_SOUND_SUPPRESSOR = "5ba26ae8d4351e00367f9bdb", + SILENCER_HK_UMP_BT_OEM_45_ACP_SOUND_SUPPRESSOR = "6130c4d51cb55961fa0fd49f", + SILENCER_KAC_PRSQDC_762X51_SOUND_SUPPRESSOR = "5dfa3d2b0dee1b22f862eade", + SILENCER_KAC_QDC_556X45_SOUND_SUPPRESSOR = "626673016f1edc06f30cf6d5", + SILENCER_KAC_QDC_65X35_SOUND_SUPPRESSOR = "55d617094bdc2d89028b4568", + SILENCER_KAC_QDSS_NT4_556X45_SOUND_SUPPRESSOR_BLACK = "57da93632459771cb65bf83f", + SILENCER_KAC_QDSS_NT4_556X45_SOUND_SUPPRESSOR_FDE = "57dbb57e2459774673234890", + SILENCER_MCX_SPEAR_SLX68MGQD_68X51_SOUND_SUPPRESSOR = "652911e650dc782999054b9d", + SILENCER_MOSIN_RIFLE_BRAMIT_762X54R_SOUND_SUPPRESSOR = "5b86a0e586f7745b600ccb23", + SILENCER_MP9_9X19_SOUND_SUPPRESSOR = "5de8f2d5b74cd90030650c72", + SILENCER_MPXSD_9X19_INTEGRATED_SOUND_SUPPRESSOR = "58aeac1b86f77457c419f475", + SILENCER_PB_9X18PM_SOUND_SUPPRESSOR = "56e05b06d2720bb2668b4586", + SILENCER_PL15_9X19_SOUND_SUPPRESSOR = "602a97060ddce744014caf6f", + SILENCER_PP1901_VITYAZ_9X19_SOUND_SUPPRESSOR = "59bfc5c886f7743bf6794e62", + SILENCER_PP9101_KEDRB_9X18PM_SOUND_SUPPRESSOR = "57f3c8cc2459773ec4480328", + SILENCER_ROTOR_43_366_TKM_MUZZLE_BRAKECOMPENSATOR = "5a9fbb74a2750c0032157181", + SILENCER_ROTOR_43_556X45_MUZZLE_BRAKECOMPENSATOR = "5a9fbb84a2750c00137fa685", + SILENCER_ROTOR_43_762X39_MUZZLE_BRAKECOMPENSATOR = "5a9fbacda2750c00141e080f", + SILENCER_ROTOR_43_762X54R_MUZZLE_BRAKECOMPENSATOR = "5e01ea19e9dc277128008c0b", + SILENCER_ROTOR_43_9X19_MUZZLE_BRAKECOMPENSATOR = "5a9fb739a2750c003215717f", + SILENCER_SIG_SAUER_SRD762QD_762X51_SOUND_SUPPRESSOR = "5fbe760793164a5b6278efc8", + SILENCER_SIG_SAUER_SRD762TI_762X51_SOUND_SUPPRESSOR = "5fbe7618d6fa9c00c571bb6c", + SILENCER_SIG_SAUER_SRD9_9X19_SOUND_SUPPRESSOR = "5c6165902e22160010261b28", + SILENCER_SKS_HEXAGON_762X39_SOUND_SUPPRESSOR = "593d490386f7745ee97a1555", + SILENCER_SR1MP_9X21_SOUND_SUPPRESSOR = "5a27b6bec4a282000e496f78", + SILENCER_SR2M_9X21_SOUND_SUPPRESSOR_SV1381 = "62e2a7138e1ac9380579c122", + SILENCER_STEYR_AUG_ASE_UTRA_S_SERIES_SL7I_556X45_SOUND_SUPPRESSOR = "634eba08f69c710e0108d386", + SILENCER_STEYR_AUG_RELFEX_T4AUG_RANGER_556X45_SOUND_SUPPRESSOR = "630f2982cdb9e392db0cbcc7", + SILENCER_SUREFIRE_SOCOM556MINI_MONSTER_556X45_SOUND_SUPPRESSOR = "55d6190f4bdc2d87028b4567", + SILENCER_SUREFIRE_SOCOM556MONSTER_556X45_SOUND_SUPPRESSOR = "55d614004bdc2d86028b4568", + SILENCER_SUREFIRE_SOCOM556RC2_556X45_SOUND_SUPPRESSOR = "5ea17bbc09aa976f2e7a51cd", + SILENCER_SV98_762X54R_SOUND_SUPPRESSOR = "5c4eecc32e221602b412b440", + SILENCER_THUNDER_BEAST_ARMS_ULTRA_5_SOUND_SUPPRESSOR = "5d44064fa4b9361e4f6eb8b5", + SILENCER_TT_762X25_MAKESHIFT_SOUND_SUPPRESSOR = "571a28e524597720b4066567", + SILENCER_VPO101_VEPRHUNTER_ROTOR_43_762X51_MUZZLE_BRAKECOMPENSATOR = "5f63407e1b231926f2329f15", + SILENCER_VSS_9X39_INTEGRAL_BARRELSUPPRESSOR = "57838c962459774a1651ec63", + SMG_BT_MP9N_9X19_SUBMACHINE_GUN = "5de7bd7bfd6b4e6e2276dc25", + SMG_BT_MP9_9X19_SUBMACHINE_GUN = "5e00903ae9dc277128008b87", + SMG_FN_P90_57X28_SUBMACHINE_GUN = "5cc82d76e24e8d00134b4b83", + SMG_HK_MP5K_9X19_SUBMACHINE_GUN = "5d2f0d8048f0356c925bc3b0", + SMG_HK_MP5_9X19_SUBMACHINE_GUN_NAVY_3_ROUND_BURST = "5926bb2186f7744b1c6c6e60", + SMG_HK_MP7A1_46X30_SUBMACHINE_GUN = "5ba26383d4351e00334c93d9", + SMG_HK_MP7A2_46X30_SUBMACHINE_GUN = "5bd70322209c4d00d7167b8f", + SMG_HK_UMP_45_ACP_SUBMACHINE_GUN = "5fc3e272f8b6a877a729eac5", + SMG_PP1901_VITYAZ_9X19_SUBMACHINE_GUN = "59984ab886f7743e98271174", + SMG_PP9101_KEDRB_9X18PM_SUBMACHINE_GUN = "57f3c6bd24597738e730fa2f", + SMG_PP91_KEDR_9X18PM_SUBMACHINE_GUN = "57d14d2524597714373db789", + SMG_PP9_KLIN_9X18PMM_SUBMACHINE_GUN = "57f4c844245977379d5c14d1", + SMG_PPSH41_762X25_SUBMACHINE_GUN = "5ea03f7400685063ec28bfa8", + SMG_SAIGA9_9X19_CARBINE = "59f9cabd86f7743a10721f46", + SMG_SIG_MPX_9X19_SUBMACHINE_GUN = "58948c8e86f77409493f7266", + SMG_SOYUZTM_STM9_GEN2_9X19_CARBINE = "60339954d62c9b14ed777c06", + SMG_SR2M_VERESK_9X21_SUBMACHINE_GUN = "62e14904c2699c0ec93adc47", + SMG_TDI_KRISS_VECTOR_GEN2_45_ACP_SUBMACHINE_GUN = "5fb64bc92b1b027b1f50bcf2", + SMG_TDI_KRISS_VECTOR_GEN2_9X19_SUBMACHINE_GUN = "5fc3f2d5900b1d5091531e57", + SNIPERRIFLE_ACCURACY_INTERNATIONAL_AXMC_338_LM_BOLTACTION_SNIPER_RIFLE = "627e14b21713922ded6f2c15", + SNIPERRIFLE_LOBAEV_ARMS_DVL10_762X51_BOLTACTION_SNIPER_RIFLE = "588892092459774ac91d4b11", + SNIPERRIFLE_MOLOT_ARMS_VPO215_GORNOSTAY_366_TKM_BOLTACTION_RIFLE = "5de652c31b7e3716273428be", + SNIPERRIFLE_MOSIN_762X54R_BOLTACTION_RIFLE_INFANTRY = "5bfd297f0db834001a669119", + SNIPERRIFLE_MOSIN_762X54R_BOLTACTION_RIFLE_SNIPER = "5ae08f0a5acfc408fb1398a1", + SNIPERRIFLE_ORSIS_T5000M_762X51_BOLTACTION_SNIPER_RIFLE = "5df24cf80dee1b22f862e9bc", + SNIPERRIFLE_REMINGTON_MODEL_700_762X51_BOLTACTION_SNIPER_RIFLE = "5bfea6e90db834001b7347f3", + SNIPERRIFLE_SV98_762X54R_BOLTACTION_SNIPER_RIFLE = "55801eed4bdc2d89578b4588", + SORTINGTABLE_SORTING_TABLE = "602543c13fee350cd564d032", + SPECIALSCOPE_ARMASIGHT_VULCAN_MG_35X_BRAVO_NIGHT_VISION_SCOPE = "5b3b6e495acfc4330140bd88", + SPECIALSCOPE_ARMASIGHT_ZEUSPRO_640_28X50_30HZ_THERMAL_SCOPE = "63fc44e2429a8a166c7f61e6", + SPECIALSCOPE_FLIR_RS32_2259X_35MM_60HZ_THERMAL_RIFLESCOPE = "5d1b5e94d7ad1a2b865a96b0", + SPECIALSCOPE_MP155_ULTIMA_THERMAL_CAMERA = "606f2696f2cb2e02a42aceb1", + SPECIALSCOPE_NSPUM_35X_DOVETAIL_NIGHT_VISION_SCOPE = "5a7c74b3e899ef0014332c29", + SPECIALSCOPE_SIG_SAUER_ECHO1_12X30MM_30HZ_THERMAL_REFLEX_SCOPE = "6478641c19d732620e045e17", + SPECIALSCOPE_TORREY_PINES_LOGIC_T12W_30HZ_THERMAL_REFLEX_SIGHT = "609bab8b455afd752b2e6138", + SPECIALSCOPE_TRIJICON_REAPIR_THERMAL_SCOPE = "5a1eaa87fcdbcb001865f75e", + SPECITEM_LEATHERMAN_MULTITOOL = "544fb5454bdc2df8738b456a", + SPECITEM_MS2000_MARKER = "5991b51486f77447b112d44f", + SPECITEM_RADIO_REPEATER = "63a0b2eabea67a6d93009e52", + SPECITEM_SIGNAL_JAMMER = "5ac78a9b86f7741cca0bbd8d", + SPECITEM_WIFI_CAMERA = "5b4391a586f7745321235ab2", + STASH_EDGE_OF_DARKNESS_STASH_10X68 = "5811ce772459770e9e5f9532", + STASH_LEFT_BEHIND_STASH_10X40 = "5811ce572459770cba1a34ea", + STASH_PREPARE_FOR_ESCAPE_STASH_10X50 = "5811ce662459770f6f490f32", + STASH_QUESTOFFLINE = "5963866b86f7747bfa1c4462", + STASH_QUESTRAID = "5963866286f7747bf429b572", + STASH_STANDARD_STASH_10X30 = "566abbc34bdc2d92178b4576", + STASH_THE_UNHEARD_EDITION_STASH_10X72 = "6602bcf19cc643f44a04274b", + STIM_2A2BTG_STIMULANT_INJECTOR = "66507eabf5ddb0818b085b68", + STIM_3BTG_STIMULANT_INJECTOR = "5ed515c8d380ab312177c0fa", + STIM_ADRENALINE_INJECTOR = "5c10c8fd86f7743d7d706df3", + STIM_AHF1M_STIMULANT_INJECTOR = "5ed515f6915ec335206e4152", + STIM_EBUDAL = "648c1a965043c4052a4f8505", + STIM_ETGCHANGE_REGENERATIVE_STIMULANT_INJECTOR = "5c0e534186f7747fa1419867", + STIM_L1_NOREPINEPHRINE_INJECTOR = "5ed515e03a40a50460332579", + STIM_MELDONIN_INJECTOR = "5ed5160a87bb8443d10680b5", + STIM_MULE_STIMULANT_INJECTOR = "5ed51652f6c34d2cc26336a1", + STIM_OBDOLBOS_2_COCKTAIL_INJECTOR = "637b60c3b7afa97bfc3d7001", + STIM_OBDOLBOS_COCKTAIL_INJECTOR = "5ed5166ad380ab312177c100", + STIM_P22_PRODUCT_22_STIMULANT_INJECTOR = "5ed515ece452db0eb56fc028", + STIM_PERFOTORAN_BLUE_BLOOD_STIMULANT_INJECTOR = "637b6251104668754b72f8f9", + STIM_PNB_PRODUCT_16_STIMULANT_INJECTOR = "637b6179104668754b72f8f5", + STIM_PROPITAL_REGENERATIVE_STIMULANT_INJECTOR = "5c0e530286f7747fa1419862", + STIM_SJ12_TGLABS_COMBAT_STIMULANT_INJECTOR = "637b612fb7afa97bfc3d7005", + STIM_SJ1_TGLABS_COMBAT_STIMULANT_INJECTOR = "5c0e531286f7747fa54205c2", + STIM_SJ6_TGLABS_COMBAT_STIMULANT_INJECTOR = "5c0e531d86f7747fa23f4d42", + STIM_SJ9_TGLABS_COMBAT_STIMULANT_INJECTOR = "5fca13ca637ee0341a484f46", + STIM_TRIMADOL_STIMULANT_INJECTOR = "637b620db7afa97bfc3d7009", + STIM_XTG12_ANTIDOTE_INJECTOR = "5fca138c2a7b221b2852a5c6", + STIM_ZAGUSTIN_HEMOSTATIC_DRUG_INJECTOR = "5c0e533786f7747fa23f4d47", + STOCK_9A91_TOPFOLDING = "6451167ad4928d46d30be3fd", + STOCK_AI_AXMC_AX_BUTT = "62811f828193841aca4a45c3", + STOCK_AI_AXMC_GTAC_ARTYPE_PISTOL_GRIP_ADAPTER = "62811e335631d45211793c95", + STOCK_AI_AXMC_PISTOL_GRIP = "62811e2510e26c1f344e6554", + STOCK_AK12 = "5beec8c20db834001d2c465c", + STOCK_AK12_BUFFER_TUBE = "649ec87d8007560a9001ab36", + STOCK_AK545_SAG_BUFFER_TUBE = "628b9a40717774443b15e9f2", + STOCK_AK74MAK100_ZENIT_PT_LOCK = "5ac78eaf5acfc4001926317a", + STOCK_AK74M_CAA_AKTS_AK74_BUFFER_TUBE = "5cf50fc5d7f00c056c53f83c", + STOCK_AK74M_POLYMER_STOCK_6P34_SB15 = "5ac50c185acfc400163398d4", + STOCK_AK74_PLUM_POLYMER_STOCK_6P20_SB7 = "5cbdb1b0ae9215000d50e105", + STOCK_AK74_POLYMER_STOCK_6P20_SB7 = "5649b0fc4bdc2d17108b4588", + STOCK_AK74_WOODEN_STOCK_6P20_SB5 = "5649b1c04bdc2d16268b457c", + STOCK_AKMAK74_CAA_AKTS_BUFFER_TUBE = "5cf518cfd7f00c065b422214", + STOCK_AKMAK74_FAB_DEFENSE_UAS = "5b04473a5acfc40018632f70", + STOCK_AKMAK74_HERA_ARMS_CQR47_PISTOL_GRIPBUTT = "619b69037b9de8162902673e", + STOCK_AKMAK74_HEXAGON_KOCHERGA_STOCK_ANODIZED_RED = "5e217ba4c1434648c13568cd", + STOCK_AKMAK74_MAGPUL_ZHUKOVS = "5b0e794b5acfc47a877359b2", + STOCK_AKMAK74_ME4_BUFFER_TUBE_ADAPTER = "5649b2314bdc2d79388b4576", + STOCK_AKMAK74_PROMAG_ARCHANGEL_OPFOR_AA47_BUTT = "6087e2a5232e5a31c233d552", + STOCK_AKMAK74_RD_AK_TO_M4_BUFFER_TUBE_ADAPTER = "628a6678ccaab13006640e49", + STOCK_AKMAK74_ZENIT_PT_LOCK = "5b222d335acfc4771e1be099", + STOCK_AKMSN_SHOULDER_PIECE_6P4N_SB119 = "5abcd472d8ce8700166032ae", + STOCK_AKMS_SHOULDER_PIECE_6P4_SB119 = "59ff3b6a86f77477562ff5ed", + STOCK_AKM_WOODEN_STOCK_6P1_SB5 = "59d6514b86f774171a068a08", + STOCK_AKS74AKS74U_ZENIT_PT_LOCK = "59ecc28286f7746d7a68aa8c", + STOCK_AKS74U_METAL_SKELETON_STOCK_6P26_SB5 = "57dc347d245977596754e7a1", + STOCK_AKS74_METAL_SKELETONIZED_STOCK_6P21_SB5 = "5ab626e4d8ce87272e4c6e43", + STOCK_AK_100SERIES_METAL_SKELETONIZED = "6386300124a1dc425c00577a", + STOCK_AK_CUSTOM_ARMS_STEF_74_SKELETON_STOCK_EXTENSION = "6494094948796d891603e59f", + STOCK_AK_GP25_ACCESSORY_KIT_RECOIL_PAD = "5a0c59791526d8dba737bba7", + STOCK_AK_ZENIT_PT1_KLASSIKA = "5b222d405acfc400153af4fe", + STOCK_AK_ZENIT_PT3_KLASSIKA = "59ecc3dd86f7746dc827481c", + STOCK_APB_DETACHABLE_WIRE = "5a17fb9dfcdbcbcae6687291", + STOCK_AR15_ADAR_215_BUFFER_TUBE = "5c0faeddd174af02a962601f", + STOCK_AR15_ADAR_215_WOODEN = "5c0e2ff6d174af02a1659d4a", + STOCK_AR15_B5_SYSTEMS_PRECISION = "5fc2369685fd526b824a5713", + STOCK_AR15_CMMG_RIPSTOCK_BUTT = "606587d11246154cad35d635", + STOCK_AR15_COLT_A2_BUFFER_TUBE = "5a33ca0fc4a282000d72292f", + STOCK_AR15_COLT_CARBINE_BUFFER_TUBE = "5649be884bdc2d79388b4577", + STOCK_AR15_DANIEL_DEFENSE_ENHANCED_COLLAPSIBLE_BUTTSTOCK_BLACK = "6516e91f609aaf354b34b3e2", + STOCK_AR15_DANIEL_DEFENSE_ENHANCED_COLLAPSIBLE_BUTTSTOCK_FDE = "6516e971a3d4c6497930b450", + STOCK_AR15_DOUBLESTAR_ACE_SOCOM_GEN4 = "5d120a10d7ad1a4e1026ba85", + STOCK_AR15_ERGO_F93_PRO = "5b0800175acfc400153aebd4", + STOCK_AR15_FAB_DEFENSE_GLCORE_BUTT = "602e620f9b513876d4338d9a", + STOCK_AR15_FAB_DEFENSE_GLR16S = "5bfe86df0db834001b734685", + STOCK_AR15_FAB_DEFENSE_GLSHOCK_BUTT = "5a9eb32da2750c00171b3f9c", + STOCK_AR15_HERA_ARMS_CQR_PISTOL_GRIPBUTT = "5a33e75ac4a2826c6e06d759", + STOCK_AR15_HIGH_STANDARD_M4SS = "55d4ae6c4bdc2d8b2f8b456e", + STOCK_AR15_HK_E1_BUTT = "5c87a07c2e2216001219d4a2", + STOCK_AR15_HK_SLIM_LINE_BUTT = "5bb20e70d4351e0035629f8f", + STOCK_AR15_KRISS_DEFIANCE_DS150_STOCK_BLACK = "5fbbaa86f9986c4cff3fe5f6", + STOCK_AR15_KRISS_DEFIANCE_DS150_STOCK_FDE = "5fce16961f152d4312622bc9", + STOCK_AR15_LMT_SOPMOD = "5ae30c9a5acfc408fb139a03", + STOCK_AR15_MAGPUL_CTR_CARBINE_STOCK_BLACK = "5d135e83d7ad1a21b83f42d8", + STOCK_AR15_MAGPUL_CTR_CARBINE_STOCK_FDE = "5d135ecbd7ad1a21c176542e", + STOCK_AR15_MAGPUL_MOE_CARBINE_STOCK_BLACK = "56eabf3bd2720b75698b4569", + STOCK_AR15_MAGPUL_MOE_CARBINE_STOCK_FDE = "58d2946386f774496974c37e", + STOCK_AR15_MAGPUL_MOE_CARBINE_STOCK_FOLIAGE_GREEN = "58d2946c86f7744e271174b5", + STOCK_AR15_MAGPUL_MOE_CARBINE_STOCK_OLIVE_DRAB = "58d2947686f774485c6a1ee5", + STOCK_AR15_MAGPUL_MOE_CARBINE_STOCK_STEALTH_GREY = "58d2947e86f77447aa070d53", + STOCK_AR15_MAGPUL_MOE_SLK_BUTTSTOCK_COYOTE_TAN = "6529370c405a5f51dd023db8", + STOCK_AR15_MAGPUL_PRS_GEN2_STOCK_FDE = "5a33cae9c4a28232980eb086", + STOCK_AR15_MAGPUL_PRS_GEN3_STOCK_BLACK = "5d44069ca4b9361ebd26fc37", + STOCK_AR15_MAGPUL_PRS_GEN3_STOCK_GREY = "5d4406a8a4b9361e4f6eb8b7", + STOCK_AR15_MAGPUL_UBR_GEN2_STOCK_BLACK = "5947e98b86f774778f1448bc", + STOCK_AR15_MAGPUL_UBR_GEN2_STOCK_FDE = "5947eab886f77475961d96c5", + STOCK_AR15_MFT_BUS = "5947c73886f7747701588af5", + STOCK_AR15_RTM_ATP_BUFFER_TUBE = "638de3603a1a4031d8260b8c", + STOCK_AR15_SB_TACTICAL_SBA3_BRACE = "628a85ee6b1d481ff772e9d5", + STOCK_AR15_SOYUZTM_BUFFER_TUBE = "602e3f1254072b51b239f713", + STOCK_AR15_STRIKE_INDUSTRIES_ADVANCED_RECEIVER_EXTENSION_BUFFER_TUBE = "5c793fb92e221644f31bfb64", + STOCK_AR15_STRIKE_INDUSTRIES_ADVANCED_RECEIVER_EXTENSION_BUFFER_TUBE_ANODIZED_RED = "5c793fc42e221600114ca25d", + STOCK_AR15_STRIKE_INDUSTRIES_VIPER_MOD_1 = "5c793fde2e221601da358614", + STOCK_AR15_STRIKE_INDUSTRIES_VIPER_PDW = "627254cc9c563e6e442c398f", + STOCK_AR15_TROY_M7A1_PDW_STOCK_BLACK = "591aef7986f774139d495f03", + STOCK_AR15_TROY_M7A1_PDW_STOCK_FDE = "591af10186f774139d495f0e", + STOCK_AR15_VLTOR_EMOD = "5b39f8db5acfc40016387a1b", + STOCK_ARMACON_BASKAK = "57ade1442459771557167e15", + STOCK_AS_VAL_SKELETON = "57c450252459772d28133253", + STOCK_AVT40_WOODEN = "6410745d5dd49d77bd078485", + STOCK_BENELLI_M3_MESA_TACTICAL_URBINO = "625eb0faa6e3a82193267ad9", + STOCK_BENELLI_M3_TELESCOPIC = "6259c3387d6aab70bc23a18d", + STOCK_CMMG_BUFFER_TUBE = "606587e18900dc2d9a55b65f", + STOCK_CNC_GUNS_OVSV98_M12B = "624c29ce09cd027dff2f8cd7", + STOCK_DANIEL_DEFENSE_TCS_12MM_BUTTPAD = "6516e9bc5901745209404287", + STOCK_DANIEL_DEFENSE_TCS_20MM_BUTTPAD = "6516e9d7e239bd0c487e3766", + STOCK_DOUBLESTAR_ACE_RECOIL_PAD = "5d120a28d7ad1a1c8962e295", + STOCK_DVL10_LOBAEV_ARMS = "58889d0c2459775bc215d981", + STOCK_FAB_DEFENSE_BUFFER_TUBE_FOR_AGR870 = "5bfe89510db834001808a127", + STOCK_FN_P90 = "5cc700b9e4a949000f0f0f25", + STOCK_FN_P90_BUTTPAD = "5cc700cae4a949035e43ba72", + STOCK_FN_P90_DAMAGE_INDUSTRIES_BUTTPAD = "5cc700d4e4a949000f0f0f28", + STOCK_FN_PS90 = "5cebec10d7f00c065703d185", + STOCK_FN_SCAR_CHEEK_REST = "618167441cb55961fa0fdc71", + STOCK_FN_SCAR_CHEEK_REST_FDE = "61825d24d3a39d50044c13af", + STOCK_FN_SCAR_FOLDING_POLYMER = "61816734d8e3106d9806c1f3", + STOCK_FN_SCAR_FOLDING_POLYMER_STOCK_FDE = "61825d06d92c473c770215de", + STOCK_FN_SCAR_RETRACTABLE_POLYMER = "618167528004cc50514c34f9", + STOCK_FN_SCAR_RETRACTABLE_POLYMER_STOCK_FDE = "61825d136ef05c2ce828f1cc", + STOCK_FN_SCAR_RUBBER_BUTTPAD = "618167616ef05c2ce828f1a8", + STOCK_GLOCK_FAB_DEFENSE_GLR17 = "5d1c702ad7ad1a632267f429", + STOCK_HK417_ADJUSTABLE_BUTT = "617155ee50224f204c1da3cd", + STOCK_HK417_E2_BUTT = "617154aa1cb55961fa0fdb3b", + STOCK_HK_ADJUSTABLE_BUTTSTOCK_CHEEK_REST = "61715e7e67085e45ef140b33", + STOCK_HK_ENHANCED_TUBE_BUFFER_TUBE = "5bb20e58d4351e00320205d7", + STOCK_HK_G28_BUFFER_TUBE = "617153016c780c1e710c9a2f", + STOCK_HK_G36_KV_ADJUSTABLE = "622f14e899892a7f9e08f6c5", + STOCK_HK_G36_POLYMER = "622f140da5958f63c67f1735", + STOCK_HK_MP5K_END_CAP = "5d2f25bc48f03502573e5d85", + STOCK_HK_MP5_A2 = "5926d3c686f77410de68ebc8", + STOCK_HK_MP5_A3_OLD_MODEL = "5926d40686f7740f152b6b7e", + STOCK_HK_MP5_END_CAP = "5c07c9660db834001a66b588", + STOCK_HK_MP7A1 = "5bcf0213d4351e0085327c17", + STOCK_HK_MP7A2 = "5bd704e7209c4d00d7167c31", + STOCK_HK_UMP_POLYMER = "5fc3e4ee7283c4046c5814af", + STOCK_KRISS_VECTOR_GEN2_FOLDING = "5fb6558ad6f0b2136f2d7eb7", + STOCK_KRISS_VECTOR_NONFOLDING_STOCK_ADAPTER = "5fb655b748c711690e3a8d5a", + STOCK_KRISS_VECTOR_PISTOL_SLING_ADAPTER = "5fb655a72b1b027b1f50bd06", + STOCK_KS23M_WIRE = "5e848dc4e4dbc5266a4ec63d", + STOCK_KS23_WOODEN = "5e848db4681bea2ada00daa9", + STOCK_M14_SAGE_INTERNATIONAL_M14ALCS_CHASSIS = "5addc7005acfc4001669f275", + STOCK_M14_SAGE_INTERNATIONAL_M14ALCS_MOD0 = "5addc7ac5acfc400194dbd90", + STOCK_M14_TROY_SASS_CHASSIS = "5ab372a310e891001717f0d8", + STOCK_M1A_PROMAG_ARCHANGEL_CHASSIS = "5addbf175acfc408fb13965b", + STOCK_M1A_SOCOM_16 = "5aaf8e43e5b5b00015693246", + STOCK_M700_AB_ARMS_MODX_BUFFER_TUBE_SIDE_FOLDER_ADAPTER = "5cde77a9d7f00c000f261009", + STOCK_M700_AB_ARMS_MODX_GEN_3_CHASSIS = "5cde739cd7f00c0010373bd3", + STOCK_M700_AI_AT_AICS_POLYMER_CHASSIS = "5d25d0ac8abbc3054f3e61f7", + STOCK_M700_HOGUE_OVERMOLDED_GHILLIE = "5bfeb32b0db834001a6694d9", + STOCK_M700_MAGPUL_PRO_700_CHASSIS = "5cdeac22d7f00c000f26168f", + STOCK_M700_MAGPUL_PRO_700_FOLDING = "5cdeac42d7f00c000d36ba73", + STOCK_M700_PROMAG_ARCHANGEL_CHASSIS = "5cf13123d7f00c1085616a50", + STOCK_M870_MAGPUL_SGA_POLYMER = "5a78813bc5856700186c4abe", + STOCK_M870_MESA_TACTICAL_LEO_STOCK_ADAPTER = "5ae35b315acfc4001714e8b0", + STOCK_M870_SHOCKWAVE_RAPTOR_GRIP = "5a788169c5856700142fdd9e", + STOCK_M870_SPS_POLYMER = "5a7880d0c5856700142fdd9d", + STOCK_MAGPUL_MOE_CARBINE_RUBBER_BUTTPAD = "58d2912286f7744e27117493", + STOCK_MCXMPX_FOLDING_STOCK_ADAPTER_BUFFER_TUBE_COYOTE_TAN = "6529366450dc782999054ba0", + STOCK_MCXMPX_STOCK_LOCKING_HINGE_ASSEMBLY = "6529348224cbe3c74a05e5c4", + STOCK_MESA_TACTICAL_CROSSHAIR_HYDRAULIC_BUFFER_TUBE = "5ef1ba28c64c5d0dfc0571a5", + STOCK_MOSIN_RIFLE_AIM_SPORTS_RECOIL_PAD = "5bbde409d4351e003562b036", + STOCK_MOSIN_RIFLE_ATI_MONTE_CARLO_CHASSIS = "5bbdb870d4351e00367fb67d", + STOCK_MOSIN_RIFLE_CARBINE = "5bfd384c0db834001a6691d3", + STOCK_MOSIN_RIFLE_INFANTRY = "5bfd35380db83400232fe5cc", + STOCK_MOSIN_RIFLE_PROMAG_ARCHANGEL_OPFOR_PRS_CHASSIS = "5bae13bad4351e00320204af", + STOCK_MOSIN_RIFLE_SAWEDOFF = "5bfd36ad0db834001c38ef66", + STOCK_MOSIN_RIFLE_SAWEDOFF_SNIPER = "5bfd36290db834001966869a", + STOCK_MOSIN_RIFLE_SNIPER_CARBINE = "5bfd37c80db834001d23e842", + STOCK_MOSIN_RIFLE_STANDARD = "5ae096d95acfc400185c2c81", + STOCK_MOSSBERG_590A1_MAGPUL_SGA = "5eea217fc64c5d0dfc05712a", + STOCK_MOSSBERG_590A1_MESA_TACTICAL_LEO_GEN1_STOCK_ADAPTER = "5ef1b9f0c64c5d0dfc0571a1", + STOCK_MOSSBERG_590A1_POLYMER = "5e87116b81c4ed43e83cefdd", + STOCK_MP133153_PLASTIC = "56083be64bdc2d20478b456f", + STOCK_MP133153_PLASTIC_PISTOL_GRIP = "56083a334bdc2dc8488b4571", + STOCK_MP133153_WOODEN = "56083cba4bdc2de22e8b456f", + STOCK_MP155_ULTIMA_LARGE_RECOIL_PAD = "606f263a8900dc2d9a55b68d", + STOCK_MP155_ULTIMA_MEDIUM_RECOIL_PAD = "606f262c6d0bd7580617bafa", + STOCK_MP155_ULTIMA_POLYMER = "606eef756d0bd7580617baf8", + STOCK_MP155_ULTIMA_THIN_RECOIL_PAD = "606ef0812535c57a13424d20", + STOCK_MP155_WALNUT = "607d5a891246154cad35d6aa", + STOCK_MP18_POLYMER = "61f803b8ced75b2e852e35f8", + STOCK_MP18_WOODEN = "61f7b234ea4ab34f2f59c3ec", + STOCK_MP431C_BUTTPAD = "611a31ce5b7ffe001b4649d1", + STOCK_MP9 = "5de910da8b6c4240ba2651b5", + STOCK_MPXMCX_COLLAPSINGTELESCOPING = "5894a13e86f7742405482982", + STOCK_MPXMCX_LIGHTWEIGHT = "5fbcc437d724d907e2077d5c", + STOCK_MPXMCX_MAXIM_DEFENSE_CQB_TELESCOPING = "5c5db6ee2e221600113fba54", + STOCK_MPXMCX_PMM_ULSS_FOLDABLE = "5c5db6f82e2216003a0fe914", + STOCK_MPXMCX_RETRACTABLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", + STOCK_MPXMCX_TELESCOPING = "5fbcc429900b1d5091531dd7", + STOCK_MTS25512_WOODEN = "612781056f3d944a17348d60", + STOCK_MTS_2001 = "5adf23995acfc400185c2aeb", + STOCK_OPSKS_WOODEN = "587e0531245977466077a0f7", + STOCK_ORSIS_T5000M = "5df35ddddfc58d14537c2036", + STOCK_ORSIS_T5000M_ALUMINIUM_BODY = "5df35e59c41b2312ea3334d5", + STOCK_PKM_WOODEN = "646371a9f2404ab67905c8e6", + STOCK_PKP_POLYMER = "6492e3a97df7d749100e29ee", + STOCK_PK_ZENIT_PT2_KLASSIKA = "6492d7847363b8a52206bc52", + STOCK_PP1901_VITYAZ_METAL_SKELETON = "599851db86f77467372f0a18", + STOCK_PPSH41 = "5ea03e9400685063ec28bfa4", + STOCK_RPD_WOODEN = "6513f1798cb24472490ee331", + STOCK_RPK16_BUFFER_TUBE = "5beec8b20db834001961942a", + STOCK_SA58FAL_MAGPUL_PRS_2_POLYMER = "5b7d63b75acfc400170e2f8a", + STOCK_SA58_BRS = "5b7d64555acfc4001876c8e2", + STOCK_SA58_BUFFER_TUBE_ADAPTER = "5b099bf25acfc4001637e683", + STOCK_SA58_FOLDING = "5b7d63cf5acfc4001876c8df", + STOCK_SA58_HUMPBACK_POLYMER = "5b7d645e5acfc400170e2f90", + STOCK_SA58_SPR = "5b7d63de5acfc400170e2f8d", + STOCK_SKS_ATI_MONTE_CARLO_CHASSIS = "653ecef836fae5a82f02b869", + STOCK_SKS_FAB_DEFENSE_UAS_BUTT = "653ed132896b99b40a0292e6", + STOCK_SKS_FAB_DEFENSE_UAS_CHASSIS = "5d0236dad7ad1a0940739d29", + STOCK_SKS_TAPCO_INTRAFUSE_BUFFER_TUBE = "5afd7e095acfc40017541f61", + STOCK_SKS_TAPCO_INTRAFUSE_CHASSIS = "5afd7ded5acfc40017541f5e", + STOCK_SKS_TOZ_WOODEN_STOCK_56A231_SB5 = "574dad8024597745964bf05c", + STOCK_SOK12_AKSTYLE = "57616ca52459773c69055192", + STOCK_SR2MP_TOPFOLDING = "62e2969582ebf260c20539c2", + STOCK_SR2M_TOPFOLDING = "62e292e7b6c0ee2f230cee00", + STOCK_SV98_CNC_GUNS_OVSV98_CHASSIS = "623b2e9d11c3296b440d1638", + STOCK_SV98_WOODEN = "61faa91878830f069b6b7967", + STOCK_SVDS_LYNX_ARMS_HINGE_BUFFER_TUBE_ADAPTER = "6197b229af1f5202c57a9bea", + STOCK_SVDS_POLYMER = "5c471b5d2e221602b21d4e14", + STOCK_TOZ106 = "5a38ef1fc4a282000b1521f6", + STOCK_TOZ106_CUSTOM_CUT_MOSIN = "5c99f3592e221644fc633070", + STOCK_TOZ106_FAB_DEFENSE_GPCP_CHEEK_REST = "626a8ae89e664a2e2a75f409", + STOCK_VPO101_VEPRHUNTER = "5c503af12e221602b177ca02", + STOCK_VPO101_VEPRHUNTER_SVDSTYLE = "5f63405df5750b524b45f114", + STOCK_VPO136_VEPRKM_WOODEN = "59e6227d86f77440d64f5dc2", + STOCK_VPO209_WOODEN = "59e89d0986f77427600d226e", + STOCK_VPO215_GORNOSTAY = "5de655be4a9f347bc92edb88", + STOCK_VSK94 = "6452519e3d52156624001fd5", + STOCK_VSS_WOODEN = "578395e82459774a0e553c7b", + TACTICALCOMBO_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", + TACTICALCOMBO_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", + TACTICALCOMBO_GLOCK_GTL_21_TACTICAL_FLASHLIGHT_WITH_LASER = "5a800961159bd4315e3a1657", + TACTICALCOMBO_HOLOSUN_LS321_TACTICAL_DEVICE = "57fd23e32459772d0805bcf1", + TACTICALCOMBO_INSIGHT_WMX200_TACTICAL_FLASHLIGHT = "626becf9582c3e319310b837", + TACTICALCOMBO_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", + TACTICALCOMBO_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", + TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER_LAMMODULE = "5cc9c20cd7f00c001336c65d", + TACTICALCOMBO_OLIGHT_BALDR_PRO_TACTICAL_FLASHLIGHT_WITH_LASER = "6272370ee4013c5d7e31f418", + TACTICALCOMBO_OLIGHT_BALDR_PRO_TACTICAL_FLASHLIGHT_WITH_LASER_TAN = "6272379924e29f06af4d5ecb", + TACTICALCOMBO_STEINER_DBALPL_TACTICAL_DEVICE = "5d2369418abbc306c62e0c80", + TACTICALCOMBO_STEINER_LASTAC_2_TACTICAL_FLASHLIGHT = "5b07dd285acfc4001754240d", + TACTICALCOMBO_SUREFIRE_X400_ULTRA_TACTICAL_FLASHLIGHT_WITH_LASER = "56def37dd2720bec348b456a", + TACTICALCOMBO_SUREFIRE_XC1_TACTICAL_FLASHLIGHT = "5a7b483fe899ef0016170d15", + TACTICALCOMBO_TT_DLP_TACTICAL_PRECISION_LAMMODULE = "5c079ed60db834001a66b372", + TACTICALCOMBO_WILCOX_RAPTAR_ES_TACTICAL_RANGEFINDER = "61605d88ffa6e502ac5e7eeb", + TACTICALCOMBO_ZENIT_KLESCH2IKS_IR_ILLUMINATOR_WITH_LASER = "5a5f1ce64f39f90b401987bc", + TACTICALCOMBO_ZENIT_KLESCH2P_FLASHLIGHT_WITH_LASER = "560d657b4bdc2da74d8b4572", + TACTICALCOMBO_ZENIT_KLESCH2U_TACTICAL_FLASHLIGHT = "5b3a337e5acfc4704b4a19a0", + TACTICALCOMBO_ZENIT_PERST3_TACTICAL_DEVICE = "5c5952732e2216398b5abda2", + THERMALVISION_T7_THERMAL_GOGGLES_WITH_A_NIGHT_VISION_MOUNT = "5c110624d174af029e69734c", + VEST_511_TACTICAL_TACTEC_PLATE_CARRIER_RANGER_GREEN = "5b44cad286f77402a54ae7e5", + VEST_6B3TM01_ARMORED_RIG_KHAKI = "5d5d646386f7742797261fd9", + VEST_6B515_ZH86_ULEY_ARMORED_RIG_FLORA = "5c0e446786f7742013381639", + VEST_6B516_ZH86_ULEY_ARMORED_RIG_KHAKI = "5c0e3eb886f7742015526062", + VEST_ANA_TACTICAL_ALPHA_CHEST_RIG_OLIVE_DRAB = "592c2d1a86f7746dbe2af32a", + VEST_ANA_TACTICAL_M1_PLATE_CARRIER_OLIVE_DRAB = "5c0e722886f7740458316a57", + VEST_ANA_TACTICAL_M2_PLATE_CARRIER_DIGITAL_FLORA = "5ab8dced86f774646209ec87", + VEST_ARS_ARMA_A18_SKANDA_PLATE_CARRIER_MULTICAM = "5d5d87f786f77427997cfaef", + VEST_ARS_ARMA_CPC_MOD1_PLATE_CARRIER_ATACS_FG = "5e4ac41886f77406a511c9a8", + VEST_AZIMUT_SS_KHAMELION_CHEST_HARNESS_OLIVE = "63611865ba5b90db0c0399d1", + VEST_AZIMUT_SS_ZHUK_CHEST_HARNESS_BLACK = "603648ff5a45383c122086ac", + VEST_AZIMUT_SS_ZHUK_CHEST_HARNESS_SURPAT = "6040dd4ddcf9592f401632d2", + VEST_BLACKHAWK_COMMANDO_CHEST_HARNESS_BLACK = "5c0e9f2c86f77432297fe0a3", + VEST_BLACKHAWK_COMMANDO_CHEST_HARNESS_DESERT_TAN = "5b44c8ea86f7742d1627baf1", + VEST_BLACKROCK_CHEST_RIG_GRAY = "5648a69d4bdc2ded0b8b457b", + VEST_CQC_OSPREY_MK4A_PLATE_CARRIER_ASSAULT_MTP = "60a3c70cde5f453f634816a3", + VEST_CQC_OSPREY_MK4A_PLATE_CARRIER_PROTECTION_MTP = "60a3c68c37ea821725773ef5", + VEST_CRYE_PRECISION_AVS_PLATE_CARRIER_RANGER_GREEN = "544a5caa4bdc2d1a388b4568", + VEST_CRYE_PRECISION_AVS_PLATE_CARRIER_TAGILLA_EDITION = "609e860ebd219504d8507525", + VEST_CRYE_PRECISION_CPC_PLATE_CARRIER_GOONS_EDITION = "628b9c7d45122232a872358f", + VEST_CSA_CHEST_RIG_BLACK = "6034d0230ca681766b6a0fb5", + VEST_DIRECT_ACTION_THUNDERBOLT_COMPACT_CHEST_RIG_SHADOW_GREY = "5f5f41f56760b4138443b352", + VEST_DIY_IDEA_CHEST_RIG = "5fd4c4fa16cac650092f6771", + VEST_DYNAFORCE_TRITON_M43A_CHEST_HARNESS_BLACK = "5ca20abf86f77418567a43f2", + VEST_EAGLE_ALLIED_INDUSTRIES_MBSS_PLATE_CARRIER_COYOTE_BROWN = "64a5366719bab53bd203bf33", + VEST_EAGLE_INDUSTRIES_MMAC_PLATE_CARRIER_RANGER_GREEN = "61bc85697113f767765c7fe7", + VEST_ECLIPSE_RBAVAF_PLATE_CARRIER_RANGER_GREEN = "628dc750b910320f4c27a732", + VEST_FIRSTSPEAR_STRANDHOGG_PLATE_CARRIER_RANGER_GREEN = "61bcc89aef0f505f0c6cd0fc", + VEST_GEAR_CRAFT_GCBSSMK1_CHEST_RIG_ATACS_FG = "5fd4c60f875c30179f5d04c2", + VEST_HALEY_STRATEGIC_D3CRX_CHEST_HARNESS_RANGER_GREEN = "5d5d85c586f774279a21cbdb", + VEST_LBT1961A_LOAD_BEARING_CHEST_RIG_GOONS_EDITION = "628baf0b967de16aab5a4f36", + VEST_LBT1961A_LOAD_BEARING_CHEST_RIG_MAS_GREY = "5e9db13186f7742f845ee9d3", + VEST_NPP_KLASS_BAGARIY_PLATE_CARRIER_DIGITAL_FLORA = "628d0618d1ba6e4fa07ce5a4", + VEST_POYASA_POYASB_GEAR_RIG = "5c0e6a1586f77404597b4965", + VEST_SCAV = "572b7adb24597762ae139821", + VEST_SECURITY = "5fd4c5477a8d854fa0105061", + VEST_SHELLBACK_TACTICAL_BANSHEE_PLATE_CARRIER_ATACS_AU = "639343fce101f4caa40a4ef3", + VEST_SOE_MICRO_RIG_MULTICAM = "5d5d8ca986f7742798716522", + VEST_SPIRITUS_SYSTEMS_BANK_ROBBER_CHEST_RIG_MULTICAM_BLACK = "5e4abc1f86f774069619fbaa", + VEST_SPLAV_TARZAN_M22_CHEST_RIG_SMOG = "5e4abfed86f77406a2713cf7", + VEST_SS_PRECISION_PLATEFRAME_PLATE_CARRIER_GOONS_EDITION = "628b9784bcf6e2659e09b8a2", + VEST_STICH_PROFI_CHEST_RIG_MK2_ASSAULT_ATACS_FG = "60a621c49c197e4e8c4455e6", + VEST_STICH_PROFI_CHEST_RIG_MK2_RECON_ATACS_FG = "60a6220e953894617404b00a", + VEST_TASMANIAN_TIGER_SK_PLATE_CARRIER_MULTICAM_BLACK = "628cd624459354321c4b7fa2", + VEST_TYPE_56_CHICOM_CHEST_HARNESS = "64be7110bf597ba84a0a41ea", + VEST_UMKA_M33SET1_HUNTER_VEST_OLIVE_DRAB = "6034cf5fffd42c541047f72e", + VEST_UMTBS_6SH112_SCOUTSNIPER_CHEST_RIG_DIGITAL_FLORA = "5929a2a086f7744f4b234d43", + VEST_VELOCITY_SYSTEMS_MPPV_MULTIPURPOSE_PATROL_VEST_WOLF_GREY = "5df8a42886f77412640e2e75", + VEST_WARTECH_MK3_TV104_CHEST_RIG_MULTICAM = "5ab8dab586f77441cd04f2a2", + VEST_WARTECH_TV109_TV106_CHEST_RIG_ATACS_FG = "59e7643b86f7742cbf2c109a", + VEST_WARTECH_TV110_PLATE_CARRIER_COYOTE = "5c0e746986f7741453628fe5", + VEST_WARTECH_TV115_PLATE_CARRIER_OLIVE_DRAB = "64a536392d2c4e6e970f4121", + VEST_ZULU_NYLON_GEAR_M4_REDUCED_SIGNATURE_CHEST_RIG_RANGER_GREEN = "64be7095047e826eae02b0c1", + VISORS_6B34_ANTIFRAGMENTATION_GLASSES = "5b432be65acfc433000ed01f", + VISORS_ANTIFRAGMENTATION_GLASSES = "59e770b986f7742cbd762754", + VISORS_CROSSBOW_TACTICAL_GLASSES = "5d5fca1ea4b93635fd598c07", + VISORS_DUNDUKK_SPORT_SUNGLASSES = "5aa2b986e5b5b00014028f4c", + VISORS_GAS_WELDER_SAFETY_GOGGLES = "61c18d83b00456371a66814b", + VISORS_JOHNB_LIQUID_DNB_GLASSES = "62a09e410b9d3c46de5b6e78", + VISORS_NPP_KLASS_CONDOR_GLASSES = "603409c80ca681766b6a0fb2", + VISORS_OAKLEY_SI_BATWOLF_GLASSES = "62a61c988ec41a51b34758d5", + VISORS_OAKLEY_SI_GASCAN_GLASSES = "5d6d2e22a4b9361bd5780d05", + VISORS_OAKLEY_SI_M_FRAME_SAFETY_GLASSES = "5c1a1cc52e221602b3136e3d", + VISORS_PYRAMEX_PROXIMITY_SAFETY_GLASSES = "5c0d32fcd174af02a1659c75", + VISORS_RAYBENCH_AVIATOR_GLASSES = "5d6d2ef3a4b93618084f58bd", + VISORS_RAYBENCH_HIPSTER_RESERVE_SUNGLASSES = "5aa2b9aee5b5b00015693121", + VISORS_ROUND_FRAME_SUNGLASSES = "5aa2b923e5b5b000137b7589", + VISORS_TACTICAL_GLASSES = "557ff21e4bdc2d89578b4586", + VISORS_TWITCH_RIVALS_2020_GLASSES = "5e71f70186f77429ee09f183" +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/MemberCategory.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/MemberCategory.d.ts index a81380e..c58497d 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/enums/MemberCategory.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/MemberCategory.d.ts @@ -9,5 +9,6 @@ export declare enum MemberCategory { CHAT_MODERATOR_WITH_PERMANENT_BAN = 64, UNIT_TEST = 128, SHERPA = 256, - EMISSARY = 512 + EMISSARY = 512, + UNHEARD = 1024 } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/MessageType.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/MessageType.d.ts index 1b0c649..33cddc8 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/enums/MessageType.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/MessageType.d.ts @@ -12,5 +12,6 @@ export declare enum MessageType { QUEST_FAIL = 11, QUEST_SUCCESS = 12, MESSAGE_WITH_ITEMS = 13, - INITIAL_SUPPORT = 14 + INITIAL_SUPPORT = 14, + BTR_ITEMS_DELIVERY = 15 } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/ModSpawn.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/ModSpawn.d.ts new file mode 100644 index 0000000..93ecbb7 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/ModSpawn.d.ts @@ -0,0 +1,8 @@ +export declare enum ModSpawn { + /** Chosen mod should be the tpl from the default weapon template */ + DEFAULT_MOD = 0, + /** Normal behaviour */ + SPAWN = 1, + /** Item should not be chosen */ + SKIP = 2 +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/Money.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/Money.d.ts index 0d39613..97b0d14 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/enums/Money.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/Money.d.ts @@ -1,5 +1,6 @@ export declare enum Money { ROUBLES = "5449016a4bdc2d6f028b456f", EUROS = "569668774bdc2da2298b4568", - DOLLARS = "5696686a4bdc2da3298b456a" + DOLLARS = "5696686a4bdc2da3298b456a", + GP = "5d235b4d86f7742e017bc88a" } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/NotificationEventType.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/NotificationEventType.d.ts new file mode 100644 index 0000000..a16a221 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/NotificationEventType.d.ts @@ -0,0 +1,40 @@ +export declare enum NotificationEventType { + ASSORTMENT_UNLOCK_RULE = "AssortmentUnlockRule", + EXAMINE_ITEMS = "ExamineItems", + EXAMINE_ALL_ITEMS = "ExamineAllItems", + FORCE_LOGOUT = "ForceLogout", + RAGFAIR_OFFER_SOLD = "RagfairOfferSold", + RAGFAIR_NEW_RATING = "RagfairNewRating", + RAGFAIR_RATING_CHANGE = "RagfairRatingChange", + CHAT_MESSAGE_RECEIVED = "new_message", + PING = "ping", + TRADER_SALES_SUM = "TraderSalesSum", + TRADER_SUPPLY = "trader_supply", + TRADER_STANDING = "TraderStanding", + UNLOCK_TRADER = "UnlockTrader", + GROUP_MATCH_RAID_SETTINGS = "groupMatchRaidSettings", + GROUP_MATCH_RAID_NOT_READY = "groupMatchRaidNotReady", + GROUP_MATCH_RAID_READY = "groupMatchRaidReady", + GROUP_MATCH_INVITE_ACCEPT = "groupMatchInviteAccept", + GROUP_MATCH_INVITE_DECLINE = "groupMatchInviteDecline", + GROUP_MATCH_INVITE_SEND = "groupMatchInviteSend", + GROUP_MATCH_LEADER_CHANGED = "groupMatchLeaderChanged", + GROUP_MATCH_START_GAME = "groupMatchStartGame", + GROUP_MATCH_USER_LEAVE = "groupMatchUserLeave", + GROUP_MATCH_WAS_REMOVED = "groupMatchWasRemoved", + GROUP_MATCH_USER_BAD_VERSION = "groupMatchUserHasBadVersion", + USER_CONFIRMED = "userConfirmed", + USER_MATCHED = "UserMatched", + USER_MATCH_OVER = "userMatchOver", + CHANNEL_DELETED = "channel_deleted", + FRIEND_LIST_REQUEST_ACCEPTED = "friendListRequestAccept", + FRIEND_LIST_REQUEST_DECLINED = "friendListRequestDecline", + FRIEND_LIST_NEW_REQUEST = "friendListNewRequest", + FRIEND_LIST_REMOVED_FROM_FRIEND_LIST = "youAreRemovedFromFriendList", + YOU_ARE_ADDED_TO_IGNORE_LIST = "YouWereAddedToIgnoreList", + YOU_ARE_REMOVED_FROM_IGNORE_LIST = "youAreRemoveFromIgnoreList", + PROFILE_LOCK_TIMER = "ProfileLockTimer", + STASH_ROWS = "StashRows", + SKILL_POINTS = "SkillPoints", + TOURNAMENT_WARNING = "tournamentWarning" +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/PlayersSpawnPlace.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/PlayersSpawnPlace.d.ts new file mode 100644 index 0000000..8a2eab6 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/PlayersSpawnPlace.d.ts @@ -0,0 +1,5 @@ +export declare enum PlayersSpawnPlace { + SAME_PLACE = "SamePlace", + DIFFERENT_PLACES = "DifferentPlaces", + AT_THE_ENDS_OF_THE_MAP = "AtTheEndsOfTheMap" +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/ProfileStatus.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/ProfileStatus.d.ts new file mode 100644 index 0000000..5a4419b --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/ProfileStatus.d.ts @@ -0,0 +1,7 @@ +export declare enum ProfileStatus { + FREE = "Free", + MATCH_WAIT = "MatchWait", + BUSY = "Busy", + LEAVING = "Leaving", + TRANSFER = "Transfer" +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/QuestRewardType.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/QuestRewardType.d.ts index fee0ad2..3f01040 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/enums/QuestRewardType.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/QuestRewardType.d.ts @@ -8,5 +8,6 @@ export declare enum QuestRewardType { PRODUCTIONS_SCHEME = "ProductionScheme", TRADER_STANDING_RESET = "TraderStandingReset", TRADER_STANDING_RESTORE = "TraderStandingRestore", - STASH_ROWS = "StashRows" + STASH_ROWS = "StashRows", + ACHIEVEMENT = "Achievement" } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/RagfairSort.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/RagfairSort.d.ts index 798a5e7..a799ac6 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/enums/RagfairSort.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/RagfairSort.d.ts @@ -1,5 +1,6 @@ export declare enum RagfairSort { ID = 0, + BARTER = 2, RATING = 3, OFFER_TITLE = 4, PRICE = 5, diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/BotAmount.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/RaidSettings/BotAmount.d.ts similarity index 85% rename from TypeScript/23CustomAbstractChatBot/types/models/enums/BotAmount.d.ts rename to TypeScript/23CustomAbstractChatBot/types/models/enums/RaidSettings/BotAmount.d.ts index 9ef9cab..ad7b6f0 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/enums/BotAmount.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/RaidSettings/BotAmount.d.ts @@ -1,5 +1,6 @@ export declare enum BotAmount { AS_ONLINE = "AsOnline", + NO_BOTS = "NoBots", LOW = "Low", MEDIUM = "Medium", HIGH = "High", diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/BotDifficulty.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/RaidSettings/BotDifficulty.d.ts similarity index 100% rename from TypeScript/23CustomAbstractChatBot/types/models/enums/BotDifficulty.d.ts rename to TypeScript/23CustomAbstractChatBot/types/models/enums/RaidSettings/BotDifficulty.d.ts diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/RaidSettings/TimeAndWeather/CloudinessType.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/RaidSettings/TimeAndWeather/CloudinessType.d.ts new file mode 100644 index 0000000..3bd9d9c --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/RaidSettings/TimeAndWeather/CloudinessType.d.ts @@ -0,0 +1,8 @@ +export declare enum CloudinessType { + CLEAR = "Clear", + PARTLY_CLOUDY = "PartlyCloudy", + CLOUDY = "Cloudy", + CLOUDY_WITH_GAPS = "CloudyWithGaps", + HEAVY_CLOUD_COVER = "HeavyCloudCover", + THUNDER_CLOUD = "Thundercloud" +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/RaidSettings/TimeAndWeather/FogType.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/RaidSettings/TimeAndWeather/FogType.d.ts new file mode 100644 index 0000000..8ee3025 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/RaidSettings/TimeAndWeather/FogType.d.ts @@ -0,0 +1,7 @@ +export declare enum FogType { + NO_FOG = "NoFog", + FAINT = "Faint", + FOG = "Fog", + HEAVY = "Heavy", + CONTINUOUS = "Continuous" +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/RaidSettings/TimeAndWeather/RainType.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/RaidSettings/TimeAndWeather/RainType.d.ts new file mode 100644 index 0000000..1e9a70e --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/RaidSettings/TimeAndWeather/RainType.d.ts @@ -0,0 +1,7 @@ +export declare enum RainType { + NO_RAIN = "NoRain", + DRIZZLING = "Drizzling", + RAIN = "Rain", + HEAVY = "Heavy", + SHOWER = "Shower" +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/RaidSettings/TimeAndWeather/TimeFlowType.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/RaidSettings/TimeAndWeather/TimeFlowType.d.ts new file mode 100644 index 0000000..b153fb5 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/RaidSettings/TimeAndWeather/TimeFlowType.d.ts @@ -0,0 +1,10 @@ +export declare enum TimeFlowType { + X0 = "x0", + X0_14 = "x0_14", + X0_25 = "x0_25", + X0_5 = "x0_5", + X1 = "x1", + X2 = "x2", + X4 = "x4", + X8 = "x8" +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/RaidSettings/TimeAndWeather/WindSpeed.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/RaidSettings/TimeAndWeather/WindSpeed.d.ts new file mode 100644 index 0000000..6cc9973 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/RaidSettings/TimeAndWeather/WindSpeed.d.ts @@ -0,0 +1,7 @@ +export declare enum WindSpeed { + LIGHT = "Light", + MODERATE = "Moderate", + STRONG = "Strong", + VERY_STRONG = "VeryStrong", + HURRICANE = "Hurricane" +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/Season.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/Season.d.ts new file mode 100644 index 0000000..b1d3662 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/Season.d.ts @@ -0,0 +1,7 @@ +export declare enum Season { + SUMMER = 0, + AUTUMN = 1, + WINTER = 2, + SPRING = 3, + STORM = 4 +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/SeasonalEventType.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/SeasonalEventType.d.ts index d7cf037..cfea1f5 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/enums/SeasonalEventType.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/SeasonalEventType.d.ts @@ -3,5 +3,6 @@ export declare enum SeasonalEventType { CHRISTMAS = "Christmas", HALLOWEEN = "Halloween", NEW_YEARS = "NewYears", - PROMO = "Promo" + PROMO = "Promo", + SNOW = "Snow" } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/SideType.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/SideType.d.ts new file mode 100644 index 0000000..faa6ff6 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/SideType.d.ts @@ -0,0 +1,5 @@ +export declare enum SideType { + PMC = "Pmc", + SAVAGE = "Savage", + RANDOM = "Random" +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/SkillTypes.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/SkillTypes.d.ts index dc059a8..4ff4799 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/enums/SkillTypes.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/SkillTypes.d.ts @@ -34,7 +34,7 @@ export declare enum SkillTypes { NIGHT_OPS = "NightOps", SILENT_OPS = "SilentOps", LOCKPICKING = "Lockpicking", - /** Also called Weapon Maintenance*/ + /** Also called Weapon Maintenance */ WEAPON_TREATMENT = "WeaponTreatment", MAG_DRILLS = "MagDrills", FREE_TRADING = "Freetrading", @@ -52,5 +52,19 @@ export declare enum SkillTypes { USEC_DEEP_WEAPON_MOD = "UsecDeepweaponmodding_Settings", USEC_LONG_RANGE_OPTICS = "UsecLongrangeoptics_Settings", USEC_NEGOTIATIONS = "UsecNegotiations", - USEC_TACTICS = "UsecTactics" + USEC_TACTICS = "UsecTactics", + PISTOL = "Pistol", + REVOLVER = "Revolver", + SMG = "SMG", + ASSAULT = "Assault", + SHOTGUN = "Shotgun", + SNIPER = "Sniper", + LMG = "LMG", + HMG = "HMG", + LAUNCHER = "Launcher", + ATTACHED_LAUNCHER = "AttachedLauncher", + MISC = "Misc", + DMR = "DMR", + DRAW_MASTER = "DrawMaster", + AIM_MASTER = "AimMaster" } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/TraderServiceType.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/TraderServiceType.d.ts new file mode 100644 index 0000000..f3586dc --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/TraderServiceType.d.ts @@ -0,0 +1,8 @@ +export declare enum TraderServiceType { + EXUSEC_LOYALTY = "ExUsecLoyalty", + ZRYACHIY_AID = "ZryachiyAid", + CULTISTS_AID = "CultistsAid", + BTR_ITEMS_DELIVERY = "BtrItemsDelivery", + PLAYER_TAXI = "PlayerTaxi", + BTR_BOT_COVER = "BtrBotCover" +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/Traders.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/Traders.d.ts index ffea725..10e5f4b 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/enums/Traders.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/Traders.d.ts @@ -7,5 +7,7 @@ export declare enum Traders { MECHANIC = "5a7c2eca46aef81a7ca2145d", RAGMAN = "5ac3b934156ae10c4430e83c", JAEGER = "5c0647fdd443bc2504c2d371", - LIGHTHOUSEKEEPER = "638f541a29ffd1183d187f57" + LIGHTHOUSEKEEPER = "638f541a29ffd1183d187f57", + BTR = "656f0f98d80a697f855d34b1", + REF = "6617beeaa9cfa777ca915b7c" } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/WeaponTypes.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/WeaponTypes.d.ts deleted file mode 100644 index 867b052..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/models/enums/WeaponTypes.d.ts +++ /dev/null @@ -1,151 +0,0 @@ -export declare enum Weapons127x55 { - ASH_12 = "5cadfbf7ae92152ac412eeef" -} -export declare enum Weapons86x70 { - MK_18 = "5fc22d7c187fea44d52eda44", - AXMC = "627e14b21713922ded6f2c15" -} -export declare enum Weapons9x39 { - AS_VAL = "57c44b372459772d2b39b8ce", - VSS_VINTOREZ = "57838ad32459774a17445cd2" -} -export declare enum Weapons762x54R { - SVDS = "5c46fbd72e2216398b5a8c9c", - MP_18 = "61f7c9e189e6fb1a5e3ea78d", - MOSIN_INFANTRY = "5bfd297f0db834001a669119", - MOSIN_SNIPER = "5ae08f0a5acfc408fb1398a1", - SV_98 = "55801eed4bdc2d89578b4588" -} -export declare enum Weapons762x51 { - VPO_101 = "5c501a4d2e221602b412b540", - DT_MDR_762 = "5dcbd56fdbd3d91b3e5468d5", - SA_58 = "5b0bbe4e5acfc40dc528a72d", - SCARH_BLACK = "6183afd850224f204c1da514", - SCARH_FDE = "6165ac306ef05c2ce828ef74", - HK_G28 = "6176aca650224f204c1da3fb", - M1A = "5aafa857e5b5b00018480968", - RFB = "5f2a9575926fd9352339381f", - RSASS = "5a367e5dc4a282000e49738f", - SR_25 = "5df8ce05b11454561e39243b", - DVL_10 = "588892092459774ac91d4b11", - M700 = "5bfea6e90db834001b7347f3", - T5000M = "5df24cf80dee1b22f862e9bc" -} -export declare enum Weapons366TKM { - VPO_209 = "59e6687d86f77411d949b251", - VPO_215 = "5de652c31b7e3716273428be" -} -export declare enum Weapons762x39 { - OP_SKS = "587e02ff24597743df3deaeb", - SKS = "574d967124597745970e7c94", - AK_103 = "5ac66d2e5acfc43b321d4b53", - AK_104 = "5ac66d725acfc43b321d4b60", - AKM = "59d6088586f774275f37482f", - AKMN = "5a0ec13bfcdbcb00165aa685", - AKMS = "59ff346386f77477562ff5e2", - AKMSN = "5abcbc27d8ce8700182eceeb", - MK47_MUTANT = "606587252535c57a13424cfd", - RD_704 = "628a60ae6b1d481ff772e9c8", - VPO_136 = "59e6152586f77473dc057aa1" -} -export declare enum Weapons762x35 { - MCX = "5fbcc1d9016cce60e8341ab3" -} -export declare enum Weapons556x45 { - ADAR_2_15 = "5c07c60e0db834002330051f", - AK_101 = "5ac66cb05acfc40198510a10", - AK_102 = "5ac66d015acfc400180ae6e4", - DT_MDR_556 = "5c488a752e221602b412af63", - HK_416A5 = "5bb2475ed4351e00853264e3", - HK_G36 = "623063e994fc3f7b302a9696", - M4A1 = "5447a9cd4bdc2dbd208b4567", - SCARL_BLACK = "6184055050224f204c1da540", - SCARL_FDE = "618428466ef05c2ce828f218", - TX15_DML = "5d43021ca4b9362eab4b5e25" -} -export declare enum Weapons545x39 { - AK_105 = "5ac66d9b5acfc4001633997a", - AK_74 = "5bf3e03b0db834001d2c4a9c", - AK_74M = "5ac4cd105acfc40016339859", - AK_74N = "5644bd2b4bdc2d3b4c8b4572", - AKS_74 = "5bf3e0490db83400196199af", - AKS_74N = "5ab8e9fcd8ce870019439434", - AKS_74U = "57dc2fa62459775949412633", - AKS_74UB = "5839a40f24597726f856b511", - AKS_74UN = "583990e32459771419544dd2", - SAG_AK = "628b5638ad252a16da6dd245", - SAG_AK_SHORT = "628b9c37a733087d0d7fe84b", - RPK_16 = "5beed0f50db834001c062b12" -} -export declare enum Weapons57x28FN { - FN_57_BLACK = "5d3eb3b0a4b93615055e84d2", - FN_57_FDE = "5d67abc1a4b93614ec50137f", - FN_P90 = "5cc82d76e24e8d00134b4b83" -} -export declare enum Weapons46x30HK { - MP7A1 = "5ba26383d4351e00334c93d9", - MP7A2 = "5bd70322209c4d00d7167b8f" -} -export declare enum Weapons1143x23 { - M1911A1 = "5e81c3cbac2bb513793cdc75", - M45A1 = "5f36a0e5fbf956000b716b65", - USP45 = "6193a720f8ee7e52e42109ed", - UMP45 = "5fc3e272f8b6a877a729eac5", - VECTOR45 = "5fb64bc92b1b027b1f50bcf2" -} -export declare enum Weapons9x33R { - CR_50DS = "61a4c8884f95bc3b2c5dc96f" -} -export declare enum Weapons9x21 { - SR_1MP = "59f98b4986f7746f546d2cef" -} -export declare enum Weapons9x19 { - GLOCK_17 = "5a7ae0c351dfba0017554310", - GLOCK_18C = "5b1fa9b25acfc40018633c01", - M9A3 = "5cadc190ae921500103bb3b6", - MP_443 = "576a581d2459771e7b1bc4f1", - P226R = "56d59856d2720bd8418b456a", - PL_15 = "602a9740da11d6478d5a06dc", - CR_200DS = "624c2e8614da335f1e034d8c", - MP5 = "5926bb2186f7744b1c6c6e60", - MP5K = "5d2f0d8048f0356c925bc3b0", - MP9 = "5e00903ae9dc277128008b87", - MP9_N = "5de7bd7bfd6b4e6e2276dc25", - MPX = "58948c8e86f77409493f7266", - PP_19_01 = "59984ab886f7743e98271174", - SAIGA_9 = "59f9cabd86f7743a10721f46", - STM_9 = "60339954d62c9b14ed777c06", - VECTOR_9MM = "5fc3f2d5900b1d5091531e57" -} -export declare enum Weapons9x18 { - APB = "5abccb7dd8ce87001773e277", - APS = "5a17f98cfcdbcb0980087290", - PB_SILENCED = "56e0598dd2720bb5668b45a6", - PM = "5448bd6b4bdc2dfc2f8b4569", - PM_T = "579204f224597773d619e051", - PP9_KLIN = "57f4c844245977379d5c14d1", - PP91_KEDR = "57d14d2524597714373db789", - PP91_KEDRB = "57f3c6bd24597738e730fa2f" -} -export declare enum Weapons762x25 { - TT = "571a12c42459771f627b58a0", - TT_GOLD = "5b3b713c5acfc4330140bd8d", - PPSH_41 = "5ea03f7400685063ec28bfa8" -} -export declare enum Weapons12Gauge { - M3_SUPER90 = "6259b864ebedf17603599e88", - M590A1 = "5e870397991fd70db46995c8", - M870 = "5a7828548dc32e5a9c28b516", - MP_133 = "54491c4f4bdc2db1078b4568", - MP_153 = "56dee2bdd2720bc8328b4567", - MP_155 = "606dae0ab0e443224b421bb7", - MP_43_1C = "5580223e4bdc2d1c128b457f", - MTS_255_12 = "60db29ce99594040e04c4a27", - SAIGA_12GA = "576165642459773c7a400233" -} -export declare enum Weapons20Gauge { - TOZ_106 = "5a38e6bac4a2826c6e06d79b" -} -export declare enum Weapons23x75 { - KS_23M = "5e848cc2988a8701445df1e8" -} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/Weapons.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/Weapons.d.ts new file mode 100644 index 0000000..178bc68 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/Weapons.d.ts @@ -0,0 +1,141 @@ +export declare enum Weapons { + ASSAULTCARBINE_762X39_OP_SKS = "587e02ff24597743df3deaeb", + ASSAULTCARBINE_762X39_SKS = "574d967124597745970e7c94", + ASSAULTCARBINE_762X51_VPO_101_VEPR_HUNTER = "5c501a4d2e221602b412b540", + ASSAULTCARBINE_762X54R_AVT_40 = "6410733d5dd49d77bd07847e", + ASSAULTCARBINE_762X54R_SVT_40 = "643ea5b23db6f9f57107d9fd", + ASSAULTCARBINE_9X39_9A_91 = "644674a13d52156624001fbc", + ASSAULTCARBINE_9X39_AS_VAL = "57c44b372459772d2b39b8ce", + ASSAULTCARBINE_9X39_VSK_94 = "645e0c6b3b381ede770e1cc9", + ASSAULTRIFLE_127X55_ASH_12 = "5cadfbf7ae92152ac412eeef", + ASSAULTRIFLE_366TKM_VPO_209 = "59e6687d86f77411d949b251", + ASSAULTRIFLE_545X39_AKS_74 = "5bf3e0490db83400196199af", + ASSAULTRIFLE_545X39_AKS_74N = "5ab8e9fcd8ce870019439434", + ASSAULTRIFLE_545X39_AKS_74U = "57dc2fa62459775949412633", + ASSAULTRIFLE_545X39_AKS_74UB = "5839a40f24597726f856b511", + ASSAULTRIFLE_545X39_AKS_74UN = "583990e32459771419544dd2", + ASSAULTRIFLE_545X39_AK_105 = "5ac66d9b5acfc4001633997a", + ASSAULTRIFLE_545X39_AK_12 = "6499849fc93611967b034949", + ASSAULTRIFLE_545X39_AK_545 = "628b5638ad252a16da6dd245", + ASSAULTRIFLE_545X39_AK_545_SHORT = "628b9c37a733087d0d7fe84b", + ASSAULTRIFLE_545X39_AK_74 = "5bf3e03b0db834001d2c4a9c", + ASSAULTRIFLE_545X39_AK_74M = "5ac4cd105acfc40016339859", + ASSAULTRIFLE_545X39_AK_74N = "5644bd2b4bdc2d3b4c8b4572", + ASSAULTRIFLE_556X45_ADAR_2_15 = "5c07c60e0db834002330051f", + ASSAULTRIFLE_556X45_AK_101 = "5ac66cb05acfc40198510a10", + ASSAULTRIFLE_556X45_AK_102 = "5ac66d015acfc400180ae6e4", + ASSAULTRIFLE_556X45_AUG_A1 = "62e7c4fba689e8c9c50dfc38", + ASSAULTRIFLE_556X45_AUG_A3 = "63171672192e68c5460cebc5", + ASSAULTRIFLE_556X45_G36 = "623063e994fc3f7b302a9696", + ASSAULTRIFLE_556X45_HK_416A5 = "5bb2475ed4351e00853264e3", + ASSAULTRIFLE_556X45_M4A1 = "5447a9cd4bdc2dbd208b4567", + ASSAULTRIFLE_556X45_MDR = "5c488a752e221602b412af63", + ASSAULTRIFLE_556X45_MK_16 = "6184055050224f204c1da540", + ASSAULTRIFLE_556X45_MK_16_FDE = "618428466ef05c2ce828f218", + ASSAULTRIFLE_556X45_TX_15_DML = "5d43021ca4b9362eab4b5e25", + ASSAULTRIFLE_68X51_SPEAR_68 = "65290f395ae2ae97b80fdf2d", + ASSAULTRIFLE_762X35_MCX_300_BLK = "5fbcc1d9016cce60e8341ab3", + ASSAULTRIFLE_762X39_AKM = "59d6088586f774275f37482f", + ASSAULTRIFLE_762X39_AKMN = "5a0ec13bfcdbcb00165aa685", + ASSAULTRIFLE_762X39_AKMS = "59ff346386f77477562ff5e2", + ASSAULTRIFLE_762X39_AKMSN = "5abcbc27d8ce8700182eceeb", + ASSAULTRIFLE_762X39_AK_103 = "5ac66d2e5acfc43b321d4b53", + ASSAULTRIFLE_762X39_AK_104 = "5ac66d725acfc43b321d4b60", + ASSAULTRIFLE_762X39_MK47 = "606587252535c57a13424cfd", + ASSAULTRIFLE_762X39_RD_704 = "628a60ae6b1d481ff772e9c8", + ASSAULTRIFLE_762X39_VPO_136_VEPR_KM = "59e6152586f77473dc057aa1", + ASSAULTRIFLE_762X51_MDR = "5dcbd56fdbd3d91b3e5468d5", + ASSAULTRIFLE_762X51_MK_17 = "6183afd850224f204c1da514", + ASSAULTRIFLE_762X51_MK_17_FDE = "6165ac306ef05c2ce828ef74", + ASSAULTRIFLE_762X51_SA_58 = "5b0bbe4e5acfc40dc528a72d", + ASSAULTRIFLE_9X18PM_MASTER_HAND = "5ae083b25acfc4001a5fc702", + FLARE_26X75_FLARE_WHITE = "62178be9d0050232da3485d9", + FLARE_26X75_GREEN = "6217726288ed9f0845317459", + FLARE_26X75_RED = "62178c4d4ecf221597654e3d", + FLARE_26X75_YELLOW = "624c0b3340357b5f566e8766", + GRENADELAUNCHER_40MMRU_FN40GL = "639af924d0446708ee62294e", + GRENADELAUNCHER_40X46_FN40GL = "5e81ebcd8e146c7080625e15", + GRENADELAUNCHER_40X46_FN40GL_2 = "639c3fbbd0446708ee622ee9", + MACHINEGUN_30X29_AGS_30 = "5d52cc5ba4b9367408500062", + MACHINEGUN_545X39_NSV_UTYOS = "5cdeb229d7f00c000e7ce174", + MACHINEGUN_545X39_RPK_16 = "5beed0f50db834001c062b12", + MACHINEGUN_762X39_RPD = "6513ef33e06849f06c0957ca", + MACHINEGUN_762X39_RPDN = "65268d8ecb944ff1e90ea385", + MACHINEGUN_762X54R_PKM = "64637076203536ad5600c990", + MACHINEGUN_762X54R_PKP = "64ca3d3954fc657e230529cc", + MACHINEGUN_762X54R_PKTM = "657857faeff4c850222dff1b", + MARKSMANRIFLE_762X51_G28 = "6176aca650224f204c1da3fb", + MARKSMANRIFLE_762X51_M1A = "5aafa857e5b5b00018480968", + MARKSMANRIFLE_762X51_RFB = "5f2a9575926fd9352339381f", + MARKSMANRIFLE_762X51_RSASS = "5a367e5dc4a282000e49738f", + MARKSMANRIFLE_762X51_SR_25 = "5df8ce05b11454561e39243b", + MARKSMANRIFLE_762X54R_SVDS = "5c46fbd72e2216398b5a8c9c", + MARKSMANRIFLE_86X70_MK_18_MJLNIR = "5fc22d7c187fea44d52eda44", + MARKSMANRIFLE_9X39_VSS_VINTOREZ = "57838ad32459774a17445cd2", + PISTOL_20X1MM_BLICKY = "66015072e9f84d5680039678", + PISTOL_45ACP_M1911A1 = "5e81c3cbac2bb513793cdc75", + PISTOL_45ACP_M45A1 = "5f36a0e5fbf956000b716b65", + PISTOL_45ACP_USP_45 = "6193a720f8ee7e52e42109ed", + PISTOL_57X28_FN_5_7 = "5d3eb3b0a4b93615055e84d2", + PISTOL_57X28_FN_5_7_FDE = "5d67abc1a4b93614ec50137f", + PISTOL_762X25TT_TT = "571a12c42459771f627b58a0", + PISTOL_762X25TT_TT_GOLD_GOLDEN = "5b3b713c5acfc4330140bd8d", + PISTOL_9X18PM_APB = "5abccb7dd8ce87001773e277", + PISTOL_9X18PM_APS = "5a17f98cfcdbcb0980087290", + PISTOL_9X18PM_PB = "56e0598dd2720bb5668b45a6", + PISTOL_9X18PM_PM = "5448bd6b4bdc2dfc2f8b4569", + PISTOL_9X18PM_PM_T = "579204f224597773d619e051", + PISTOL_9X19_GLOCK_17 = "5a7ae0c351dfba0017554310", + PISTOL_9X19_GLOCK_18C = "5b1fa9b25acfc40018633c01", + PISTOL_9X19_GLOCK_19X = "63088377b5cd696784087147", + PISTOL_9X19_M9A3 = "5cadc190ae921500103bb3b6", + PISTOL_9X19_MP_443_GRACH = "576a581d2459771e7b1bc4f1", + PISTOL_9X19_P226R = "56d59856d2720bd8418b456a", + PISTOL_9X19_PL_15 = "602a9740da11d6478d5a06dc", + PISTOL_9X21_SR_1MP = "59f98b4986f7746f546d2cef", + REVOLVER_127X55_RSH_12 = "633ec7c2a6918cb895019c6c", + REVOLVER_12G_MTS_255_12 = "60db29ce99594040e04c4a27", + REVOLVER_40X46_MSGL = "6275303a9f372d6ea97f9ec7", + REVOLVER_9X19_CR_200DS = "624c2e8614da335f1e034d8c", + REVOLVER_9X33R_CR_50DS = "61a4c8884f95bc3b2c5dc96f", + SHOTGUN_12G_590A1 = "5e870397991fd70db46995c8", + SHOTGUN_12G_M3_SUPER_90 = "6259b864ebedf17603599e88", + SHOTGUN_12G_M870 = "5a7828548dc32e5a9c28b516", + SHOTGUN_12G_MP_133 = "54491c4f4bdc2db1078b4568", + SHOTGUN_12G_MP_153 = "56dee2bdd2720bc8328b4567", + SHOTGUN_12G_MP_155 = "606dae0ab0e443224b421bb7", + SHOTGUN_12G_MP_43_1C = "5580223e4bdc2d1c128b457f", + SHOTGUN_12G_SAIGA_12K = "576165642459773c7a400233", + SHOTGUN_12G_SAWED_OFF = "64748cb8de82c85eaf0a273a", + SHOTGUN_20G_TOZ_106 = "5a38e6bac4a2826c6e06d79b", + SHOTGUN_23X75_KS_23M = "5e848cc2988a8701445df1e8", + SHOTGUN_762X54R_MP_18 = "61f7c9e189e6fb1a5e3ea78d", + SIGNALPISTOL_26X75_SP_81 = "620109578d82e67e7911abf2", + SMG_45ACP_UMP_45 = "5fc3e272f8b6a877a729eac5", + SMG_45ACP_VECTOR_45ACP = "5fb64bc92b1b027b1f50bcf2", + SMG_46X30_MP7A1 = "5ba26383d4351e00334c93d9", + SMG_46X30_MP7A2 = "5bd70322209c4d00d7167b8f", + SMG_57X28_P90 = "5cc82d76e24e8d00134b4b83", + SMG_762X25TT_PPSH41 = "5ea03f7400685063ec28bfa8", + SMG_9X18PMM_PP_9_KLIN = "57f4c844245977379d5c14d1", + SMG_9X18PM_PP_91_01_KEDR_B = "57f3c6bd24597738e730fa2f", + SMG_9X18PM_PP_91_KEDR = "57d14d2524597714373db789", + SMG_9X19_MP5K_N = "5d2f0d8048f0356c925bc3b0", + SMG_9X19_MP5_NAVY_3_ROUND_BURST = "5926bb2186f7744b1c6c6e60", + SMG_9X19_MP9 = "5e00903ae9dc277128008b87", + SMG_9X19_MP9_N = "5de7bd7bfd6b4e6e2276dc25", + SMG_9X19_MPX = "58948c8e86f77409493f7266", + SMG_9X19_PP_19_01 = "59984ab886f7743e98271174", + SMG_9X19_SAIGA_9 = "59f9cabd86f7743a10721f46", + SMG_9X19_STM_9 = "60339954d62c9b14ed777c06", + SMG_9X19_VECTOR_9X19 = "5fc3f2d5900b1d5091531e57", + SMG_9X21_SR_2M = "62e14904c2699c0ec93adc47", + SNIPERRIFLE_366TKM_VPO_215_GORNOSTAY = "5de652c31b7e3716273428be", + SNIPERRIFLE_762X51_DVL_10 = "588892092459774ac91d4b11", + SNIPERRIFLE_762X51_M700 = "5bfea6e90db834001b7347f3", + SNIPERRIFLE_762X51_T_5000M = "5df24cf80dee1b22f862e9bc", + SNIPERRIFLE_762X54R_MOSIN_INFANTRY = "5bfd297f0db834001a669119", + SNIPERRIFLE_762X54R_MOSIN_SNIPER = "5ae08f0a5acfc408fb1398a1", + SNIPERRIFLE_762X54R_SV_98 = "55801eed4bdc2d89578b4588", + SNIPERRIFLE_86X70_AXMC = "627e14b21713922ded6f2c15" +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/WildSpawnTypeNumber.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/WildSpawnTypeNumber.d.ts index e8a2b5e..19d0062 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/enums/WildSpawnTypeNumber.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/WildSpawnTypeNumber.d.ts @@ -36,6 +36,21 @@ export declare enum WildSpawnTypeNumber { ARENAFIGHTEREVENT = 35, BOSSBOARSNIPER = 36, CRAZYASSAULTEVENT = 37, - SPTUSEC = 38, - SPTBEAR = 39 + PEACEFULLZRYACHIYEVENT = 38, + SECTACTPRIESTEVENT = 39, + RAVANGEZRYACHIYEVENT = 40, + FOLLOWERBOARCLOSE1 = 41, + FOLLOWERBOARCLOSE2 = 42, + BOSSKOLONTAY = 43, + FOLLOWERKOLONTAYASSAULT = 44, + FOLLOWERKOLONTAYSECURITY = 45, + SHOOTERBTR = 46, + SPIRITWINTER = 47, + SPIRITSPRING = 48, + PMCBEAR = 49, + PMCUSEC = 50, + SKIER = 51, + PEACEMAKER = 52, + SPTUSEC = 100, + SPTBEAR = 101 } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/hideout/QteActivityType.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/hideout/QteActivityType.d.ts new file mode 100644 index 0000000..7a08cc6 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/hideout/QteActivityType.d.ts @@ -0,0 +1,3 @@ +export declare enum QteActivityType { + GYM = 0 +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/hideout/QteEffectType.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/hideout/QteEffectType.d.ts new file mode 100644 index 0000000..9ecd1a2 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/hideout/QteEffectType.d.ts @@ -0,0 +1,5 @@ +export declare enum QteEffectType { + FINISH_EFFECT = "FinishEffect", + SINGLE_SUCCESS_EFFECT = "SingleSuccessEffect", + SINGLE_FAIL_EFFECT = "SingleFailEffect" +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/hideout/QteResultType.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/hideout/QteResultType.d.ts new file mode 100644 index 0000000..05b48b8 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/hideout/QteResultType.d.ts @@ -0,0 +1,4 @@ +export declare enum QteResultType { + NONE = "None", + EXIT = "Exit" +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/hideout/QteRewardType.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/hideout/QteRewardType.d.ts new file mode 100644 index 0000000..251c2ad --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/hideout/QteRewardType.d.ts @@ -0,0 +1,6 @@ +export declare enum QteRewardType { + SKILL = "Skill", + HEALTH_EFFECT = "HealthEffect", + MUSCLE_PAIN = "MusclePain", + GYM_ARM_TRAUMA = "GymArmTrauma" +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/hideout/QteType.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/hideout/QteType.d.ts new file mode 100644 index 0000000..4c50c0d --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/hideout/QteType.d.ts @@ -0,0 +1,3 @@ +export declare enum QteType { + SHRINKING_CIRCLE = 0 +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/hideout/RequirementType.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/hideout/RequirementType.d.ts new file mode 100644 index 0000000..834eabf --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/hideout/RequirementType.d.ts @@ -0,0 +1,12 @@ +export declare enum RequirementType { + AREA = "Area", + ITEM = "Item", + TRADER_UNLOCK = "TraderUnlock", + TRADER_LOYALTY = "TraderLoyalty", + SKILL = "Skill", + RESOURCE = "Resource", + TOOL = "Tool", + QUEST_COMPLETE = "QuestComplete", + HEALTH = "Health", + BODY_PART_BUFF = "BodyPartBuff" +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/external/IPostAkiLoadMod.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/external/IPostAkiLoadMod.d.ts deleted file mode 100644 index cc8f7af..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/models/external/IPostAkiLoadMod.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { DependencyContainer } from "@spt-aki/models/external/tsyringe"; -export interface IPostAkiLoadMod { - postAkiLoad(container: DependencyContainer): void; -} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/external/IPostAkiLoadModAsync.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/external/IPostAkiLoadModAsync.d.ts deleted file mode 100644 index 44700e1..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/models/external/IPostAkiLoadModAsync.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { DependencyContainer } from "@spt-aki/models/external/tsyringe"; -export interface IPostAkiLoadModAsync { - postAkiLoadAsync(container: DependencyContainer): Promise; -} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/external/IPostDBLoadMod.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/external/IPostDBLoadMod.d.ts index f2f43ab..8b482b6 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/external/IPostDBLoadMod.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/external/IPostDBLoadMod.d.ts @@ -1,4 +1,4 @@ -import { DependencyContainer } from "@spt-aki/models/external/tsyringe"; +import type { DependencyContainer } from "tsyringe"; export interface IPostDBLoadMod { postDBLoad(container: DependencyContainer): void; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/external/IPostDBLoadModAsync.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/external/IPostDBLoadModAsync.d.ts index ed06ed5..63b55bb 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/external/IPostDBLoadModAsync.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/external/IPostDBLoadModAsync.d.ts @@ -1,4 +1,4 @@ -import { DependencyContainer } from "@spt-aki/models/external/tsyringe"; +import type { DependencyContainer } from "tsyringe"; export interface IPostDBLoadModAsync { postDBLoadAsync(container: DependencyContainer): Promise; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/external/IPostSptLoadMod.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/external/IPostSptLoadMod.d.ts new file mode 100644 index 0000000..5ef9766 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/external/IPostSptLoadMod.d.ts @@ -0,0 +1,4 @@ +import type { DependencyContainer } from "tsyringe"; +export interface IPostSptLoadMod { + postSptLoad(container: DependencyContainer): void; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/external/IPostSptLoadModAsync.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/external/IPostSptLoadModAsync.d.ts new file mode 100644 index 0000000..7778d96 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/external/IPostSptLoadModAsync.d.ts @@ -0,0 +1,4 @@ +import type { DependencyContainer } from "tsyringe"; +export interface IPostSptLoadModAsync { + postSptLoadAsync(container: DependencyContainer): Promise; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/external/IPreAkiLoadMod.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/external/IPreAkiLoadMod.d.ts deleted file mode 100644 index e81b660..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/models/external/IPreAkiLoadMod.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { DependencyContainer } from "@spt-aki/models/external/tsyringe"; -export interface IPreAkiLoadMod { - preAkiLoad(container: DependencyContainer): void; -} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/external/IPreAkiLoadModAsync.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/external/IPreAkiLoadModAsync.d.ts deleted file mode 100644 index 89a3e67..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/models/external/IPreAkiLoadModAsync.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { DependencyContainer } from "@spt-aki/models/external/tsyringe"; -export interface IPreAkiLoadModAsync { - preAkiLoadAsync(container: DependencyContainer): Promise; -} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/external/IPreSptLoadMod.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/external/IPreSptLoadMod.d.ts new file mode 100644 index 0000000..dc38515 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/external/IPreSptLoadMod.d.ts @@ -0,0 +1,4 @@ +import type { DependencyContainer } from "tsyringe"; +export interface IPreSptLoadMod { + preSptLoad(container: DependencyContainer): void; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/external/IPreSptLoadModAsync.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/external/IPreSptLoadModAsync.d.ts new file mode 100644 index 0000000..0322434 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/external/IPreSptLoadModAsync.d.ts @@ -0,0 +1,4 @@ +import type { DependencyContainer } from "tsyringe"; +export interface IPreSptLoadModAsync { + preSptLoadAsync(container: DependencyContainer): Promise; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/bindings/Route.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/bindings/Route.d.ts index 1b29d7d..abe8d2c 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/bindings/Route.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/bindings/Route.d.ts @@ -1,3 +1,3 @@ export interface IRoute { - aki: any; + spt: any; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/BotGenerationDetails.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/BotGenerationDetails.d.ts index 26571a2..3977ee5 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/BotGenerationDetails.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/BotGenerationDetails.d.ts @@ -1,3 +1,4 @@ +import { MinMax } from "@spt/models/common/MinMax"; export interface BotGenerationDetails { /** Should the bot be generated as a PMC */ isPmc: boolean; @@ -6,13 +7,20 @@ export interface BotGenerationDetails { /** Side of bot */ side: string; /** Active players current level */ - playerLevel: number; - /** Delta of highest level of bot */ + playerLevel?: number; + playerName?: string; + /** Level specific overrides for PMC level */ + locationSpecificPmcLevelOverride?: MinMax; + /** Delta of highest level of bot e.g. 50 means 50 levels above player */ botRelativeLevelDeltaMax: number; + /** Delta of lowest level of bot e.g. 50 means 50 levels below player */ + botRelativeLevelDeltaMin: number; /** How many to create and store */ botCountToGenerate: number; /** Desired difficulty of the bot */ botDifficulty: string; /** Will the generated bot be a player scav */ isPlayerScav: boolean; + eventRole?: string; + allPmcsHaveSameNameAsPlayer?: boolean; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/GenerateWeaponResult.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/GenerateWeaponResult.d.ts index f28d052..d4a2526 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/GenerateWeaponResult.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/GenerateWeaponResult.d.ts @@ -1,6 +1,6 @@ -import { Mods } from "@spt-aki/models/eft/common/tables/IBotType"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; +import { Mods } from "@spt/models/eft/common/tables/IBotType"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class GenerateWeaponResult { weapon: Item[]; chosenAmmoTpl: string; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IBotLootCache.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IBotLootCache.d.ts index 58a1bd1..529c2cd 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IBotLootCache.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IBotLootCache.d.ts @@ -1,23 +1,30 @@ -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; export interface IBotLootCache { - backpackLoot: ITemplateItem[]; - pocketLoot: ITemplateItem[]; - vestLoot: ITemplateItem[]; - combinedPoolLoot: ITemplateItem[]; - specialItems: ITemplateItem[]; - healingItems: ITemplateItem[]; - drugItems: ITemplateItem[]; - stimItems: ITemplateItem[]; - grenadeItems: ITemplateItem[]; + backpackLoot: Record; + pocketLoot: Record; + vestLoot: Record; + secureLoot: Record; + combinedPoolLoot: Record; + specialItems: Record; + healingItems: Record; + drugItems: Record; + foodItems: Record; + drinkItems: Record; + currencyItems: Record; + stimItems: Record; + grenadeItems: Record; } export declare enum LootCacheType { SPECIAL = "Special", BACKPACK = "Backpack", POCKET = "Pocket", VEST = "Vest", + SECURE = "SecuredContainer", COMBINED = "Combined", HEALING_ITEMS = "HealingItems", DRUG_ITEMS = "DrugItems", STIM_ITEMS = "StimItems", - GRENADE_ITEMS = "GrenadeItems" + GRENADE_ITEMS = "GrenadeItems", + FOOD_ITEMS = "FoodItems", + DRINK_ITEMS = "DrinkItems", + CURRENCY_ITEMS = "CurrencyItems" } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IBots.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IBots.d.ts new file mode 100644 index 0000000..f413be4 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IBots.d.ts @@ -0,0 +1,8 @@ +import { IBotBase } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotCore } from "@spt/models/eft/common/tables/IBotCore"; +import { IBotType } from "@spt/models/eft/common/tables/IBotType"; +export interface IBots { + types: Record; + base: IBotBase; + core: IBotCore; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IChooseRandomCompatibleModResult.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IChooseRandomCompatibleModResult.d.ts new file mode 100644 index 0000000..6ba6630 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IChooseRandomCompatibleModResult.d.ts @@ -0,0 +1,7 @@ +export interface IChooseRandomCompatibleModResult { + incompatible: boolean; + found?: boolean; + chosenTpl?: string; + reason: string; + slotBlocked?: boolean; +} diff --git a/TypeScript/24WebSocket/types/generators/IFilterPlateModsForSlotByLevelResult.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IFilterPlateModsForSlotByLevelResult.d.ts similarity index 100% rename from TypeScript/24WebSocket/types/generators/IFilterPlateModsForSlotByLevelResult.d.ts rename to TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IFilterPlateModsForSlotByLevelResult.d.ts diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IGenerateEquipmentProperties.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IGenerateEquipmentProperties.d.ts new file mode 100644 index 0000000..9cf7685 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IGenerateEquipmentProperties.d.ts @@ -0,0 +1,22 @@ +import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { Chances, Mods } from "@spt/models/eft/common/tables/IBotType"; +import { EquipmentFilters, RandomisationDetails } from "@spt/models/spt/config/IBotConfig"; +export interface IGenerateEquipmentProperties { + /** Root Slot being generated */ + rootEquipmentSlot: string; + /** Equipment pool for root slot being generated */ + rootEquipmentPool: Record; + modPool: Mods; + /** Dictionary of mod items and their chance to spawn for this bot type */ + spawnChances: Chances; + /** Role being generated for */ + botRole: string; + /** Level of bot being generated */ + botLevel: number; + inventory: PmcInventory; + botEquipmentConfig: EquipmentFilters; + /** Settings from bot.json to adjust how item is generated */ + randomisationDetails: RandomisationDetails; + /** OPTIONAL - Do not generate mods for tpls in this array */ + generateModsBlacklist?: string[]; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IGenerateWeaponRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IGenerateWeaponRequest.d.ts new file mode 100644 index 0000000..4bc8adf --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IGenerateWeaponRequest.d.ts @@ -0,0 +1,37 @@ +import { Mods, ModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { BotModLimits } from "@spt/services/BotWeaponModLimitService"; +export interface IGenerateWeaponRequest { + /** Weapon to add mods to / result that is returned */ + weapon: Item[]; + /** Pool of compatible mods to attach to weapon */ + modPool: Mods; + /** ParentId of weapon */ + weaponId: string; + /** Weapon which mods will be generated on */ + parentTemplate: ITemplateItem; + /** Chance values mod will be added */ + modSpawnChances: ModsChances; + /** Ammo tpl to use when generating magazines/cartridges */ + ammoTpl: string; + /** Bot-specific properties */ + botData: IBotData; + /** limits placed on certain mod types per gun */ + modLimits: BotModLimits; + /** Info related to the weapon being generated */ + weaponStats: IWeaponStats; +} +export interface IBotData { + /** Role of bot weapon is generated for */ + role: string; + /** Level of the bot weapon is being generated for */ + level: number; + /** role of bot when accessing bot.json equipment config settings */ + equipmentRole: string; +} +export interface IWeaponStats { + hasOptic?: boolean; + hasFrontIronSight?: boolean; + hasRearIronSight?: boolean; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IItemSpawnLimitSettings.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IItemSpawnLimitSettings.d.ts new file mode 100644 index 0000000..ca3e6a6 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IItemSpawnLimitSettings.d.ts @@ -0,0 +1,4 @@ +export interface IItemSpawnLimitSettings { + currentLimits: Record; + globalLimits: Record; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IModToSpawnRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IModToSpawnRequest.d.ts new file mode 100644 index 0000000..58e9a1d --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IModToSpawnRequest.d.ts @@ -0,0 +1,27 @@ +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { ModSpawn } from "@spt/models/enums/ModSpawn"; +import { IWeaponStats } from "@spt/models/spt/bots/IGenerateWeaponRequest"; +import { EquipmentFilterDetails } from "@spt/models/spt/config/IBotConfig"; +export interface IModToSpawnRequest { + /** Slot mod will fit into */ + modSlot: string; + /** Will generate a randomised mod pool if true */ + isRandomisableSlot: boolean; + /** Parent slot the item will be a part of */ + botWeaponSightWhitelist: Record; + /** Blacklist to prevent mods from being picked */ + botEquipBlacklist: EquipmentFilterDetails; + /** Pool of items to pick from */ + itemModPool: Record; + /** Array with only weapon tpl in it, ready for mods to be added */ + weapon: Item[]; + /** Ammo tpl to use if slot requires a cartridge to be added (e.g. mod_magazine) */ + ammoTpl: string; + /** Parent item the mod will go into */ + parentTemplate: ITemplateItem; + /** Should mod be spawned/skipped/use default */ + modSpawnResult: ModSpawn; + /** Weapon stats for weapon being generated */ + weaponStats: IWeaponStats; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IBotCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IBotCallbacks.d.ts index 02f444e..e49406e 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IBotCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IBotCallbacks.d.ts @@ -1,7 +1,7 @@ -import { IGenerateBotsRequestData } from "@spt-aki/models/eft/bot/IGenerateBotsRequestData"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IBotBase } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; +import { IGenerateBotsRequestData } from "@spt/models/eft/bot/IGenerateBotsRequestData"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IBotBase } from "@spt/models/eft/common/tables/IBotBase"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; export interface IBotCallbacks { getBotLimit(url: string, info: IEmptyRequestData, sessionID: string): string; getBotDifficulty(url: string, info: IEmptyRequestData, sessionID: string): string; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/ICustomizationCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/ICustomizationCallbacks.d.ts index f4f8877..8dba3d7 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/ICustomizationCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/ICustomizationCallbacks.d.ts @@ -1,9 +1,9 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { ISuit } from "@spt-aki/models/eft/common/tables/ITrader"; -import { IBuyClothingRequestData } from "@spt-aki/models/eft/customization/IBuyClothingRequestData"; -import { IWearClothingRequestData } from "@spt-aki/models/eft/customization/IWearClothingRequestData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { ISuit } from "@spt/models/eft/common/tables/ITrader"; +import { IBuyClothingRequestData } from "@spt/models/eft/customization/IBuyClothingRequestData"; +import { IWearClothingRequestData } from "@spt/models/eft/customization/IWearClothingRequestData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; export interface ICustomizationCallbacks { getSuits(url: string, info: any, sessionID: string): IGetBodyResponseData; getTraderSuits(url: string, info: any, sessionID: string): IGetBodyResponseData; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IDataCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IDataCallbacks.d.ts index 0651dce..cd0adab 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IDataCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IDataCallbacks.d.ts @@ -1,11 +1,11 @@ -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IGlobals } from "@spt-aki/models/eft/common/IGlobals"; -import { IHideoutArea } from "@spt-aki/models/eft/hideout/IHideoutArea"; -import { IHideoutProduction } from "@spt-aki/models/eft/hideout/IHideoutProduction"; -import { IHideoutScavCase } from "@spt-aki/models/eft/hideout/IHideoutScavCase"; -import { IHideoutSettingsBase } from "@spt-aki/models/eft/hideout/IHideoutSettingsBase"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { ISettingsBase } from "@spt-aki/models/spt/server/ISettingsBase"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IGlobals } from "@spt/models/eft/common/IGlobals"; +import { IHideoutArea } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutScavCase } from "@spt/models/eft/hideout/IHideoutScavCase"; +import { IHideoutSettingsBase } from "@spt/models/eft/hideout/IHideoutSettingsBase"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { ISettingsBase } from "@spt/models/spt/server/ISettingsBase"; export interface IDataCallbacks { getSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getGlobals(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IDialogueCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IDialogueCallbacks.d.ts index 0cc835b..b30c042 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IDialogueCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IDialogueCallbacks.d.ts @@ -1,20 +1,20 @@ -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IFriendRequestData } from "@spt-aki/models/eft/dialog/IFriendRequestData"; -import { IGetAllAttachmentsRequestData } from "@spt-aki/models/eft/dialog/IGetAllAttachmentsRequestData"; -import { IGetAllAttachmentsResponse } from "@spt-aki/models/eft/dialog/IGetAllAttachmentsResponse"; -import { IGetChatServerListRequestData } from "@spt-aki/models/eft/dialog/IGetChatServerListRequestData"; -import { IGetFriendListDataResponse } from "@spt-aki/models/eft/dialog/IGetFriendListDataResponse"; -import { IGetMailDialogInfoRequestData } from "@spt-aki/models/eft/dialog/IGetMailDialogInfoRequestData"; -import { IGetMailDialogListRequestData } from "@spt-aki/models/eft/dialog/IGetMailDialogListRequestData"; -import { IGetMailDialogViewRequestData } from "@spt-aki/models/eft/dialog/IGetMailDialogViewRequestData"; -import { IGetMailDialogViewResponseData } from "@spt-aki/models/eft/dialog/IGetMailDialogViewResponseData"; -import { IPinDialogRequestData } from "@spt-aki/models/eft/dialog/IPinDialogRequestData"; -import { IRemoveDialogRequestData } from "@spt-aki/models/eft/dialog/IRemoveDialogRequestData"; -import { ISendMessageRequest } from "@spt-aki/models/eft/dialog/ISendMessageRequest"; -import { ISetDialogReadRequestData } from "@spt-aki/models/eft/dialog/ISetDialogReadRequestData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { INullResponseData } from "@spt-aki/models/eft/httpResponse/INullResponseData"; -import { DialogueInfo } from "@spt-aki/models/eft/profile/IAkiProfile"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IFriendRequestData } from "@spt/models/eft/dialog/IFriendRequestData"; +import { IGetAllAttachmentsRequestData } from "@spt/models/eft/dialog/IGetAllAttachmentsRequestData"; +import { IGetAllAttachmentsResponse } from "@spt/models/eft/dialog/IGetAllAttachmentsResponse"; +import { IGetChatServerListRequestData } from "@spt/models/eft/dialog/IGetChatServerListRequestData"; +import { IGetFriendListDataResponse } from "@spt/models/eft/dialog/IGetFriendListDataResponse"; +import { IGetMailDialogInfoRequestData } from "@spt/models/eft/dialog/IGetMailDialogInfoRequestData"; +import { IGetMailDialogListRequestData } from "@spt/models/eft/dialog/IGetMailDialogListRequestData"; +import { IGetMailDialogViewRequestData } from "@spt/models/eft/dialog/IGetMailDialogViewRequestData"; +import { IGetMailDialogViewResponseData } from "@spt/models/eft/dialog/IGetMailDialogViewResponseData"; +import { IPinDialogRequestData } from "@spt/models/eft/dialog/IPinDialogRequestData"; +import { IRemoveDialogRequestData } from "@spt/models/eft/dialog/IRemoveDialogRequestData"; +import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; +import { ISetDialogReadRequestData } from "@spt/models/eft/dialog/ISetDialogReadRequestData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { INullResponseData } from "@spt/models/eft/httpResponse/INullResponseData"; +import { DialogueInfo } from "@spt/models/eft/profile/ISptProfile"; export interface IDialogueCallbacks { getFriendList(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getChatServerList(url: string, info: IGetChatServerListRequestData, sessionID: string): IGetBodyResponseData; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IGameCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IGameCallbacks.d.ts index 324ec31..21554dd 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IGameCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IGameCallbacks.d.ts @@ -1,9 +1,9 @@ -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IGameConfigResponse } from "@spt-aki/models/eft/game/IGameConfigResponse"; -import { IGameEmptyCrcRequestData } from "@spt-aki/models/eft/game/IGameEmptyCrcRequestData"; -import { IVersionValidateRequestData } from "@spt-aki/models/eft/game/IVersionValidateRequestData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { INullResponseData } from "@spt-aki/models/eft/httpResponse/INullResponseData"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IGameConfigResponse } from "@spt/models/eft/game/IGameConfigResponse"; +import { IGameEmptyCrcRequestData } from "@spt/models/eft/game/IGameEmptyCrcRequestData"; +import { IVersionValidateRequestData } from "@spt/models/eft/game/IVersionValidateRequestData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { INullResponseData } from "@spt/models/eft/httpResponse/INullResponseData"; export interface IGameCallbacks { versionValidate(url: string, info: IVersionValidateRequestData, sessionID: string): INullResponseData; gameStart(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IHealthCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IHealthCallbacks.d.ts index 0ea81a2..c0244a1 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IHealthCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IHealthCallbacks.d.ts @@ -1,11 +1,11 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IHealthTreatmentRequestData } from "@spt-aki/models/eft/health/IHealthTreatmentRequestData"; -import { IOffraidEatRequestData } from "@spt-aki/models/eft/health/IOffraidEatRequestData"; -import { IOffraidHealRequestData } from "@spt-aki/models/eft/health/IOffraidHealRequestData"; -import { ISyncHealthRequestData } from "@spt-aki/models/eft/health/ISyncHealthRequestData"; -import { IAkiProfile } from "@spt-aki/models/eft/profile/IAkiProfile"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IHealthTreatmentRequestData } from "@spt/models/eft/health/IHealthTreatmentRequestData"; +import { IOffraidEatRequestData } from "@spt/models/eft/health/IOffraidEatRequestData"; +import { IOffraidHealRequestData } from "@spt/models/eft/health/IOffraidHealRequestData"; +import { ISyncHealthRequestData } from "@spt/models/eft/health/ISyncHealthRequestData"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; export interface IHealthCallbacks { - onLoad(sessionID: string): IAkiProfile; + onLoad(sessionID: string): ISptProfile; syncHealth(url: string, info: ISyncHealthRequestData, sessionID: string): any; offraidEat(pmcData: IPmcData, body: IOffraidEatRequestData, sessionID: string): any; offraidHeal(pmcData: IPmcData, body: IOffraidHealRequestData, sessionID: string): any; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IHideoutCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IHideoutCallbacks.d.ts index feda12e..1349144 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IHideoutCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IHideoutCallbacks.d.ts @@ -1,14 +1,14 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IHideoutContinuousProductionStartRequestData } from "@spt-aki/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; -import { IHideoutPutItemInRequestData } from "@spt-aki/models/eft/hideout/IHideoutPutItemInRequestData"; -import { IHideoutScavCaseStartRequestData } from "@spt-aki/models/eft/hideout/IHideoutScavCaseStartRequestData"; -import { IHideoutSingleProductionStartRequestData } from "@spt-aki/models/eft/hideout/IHideoutSingleProductionStartRequestData"; -import { IHideoutTakeItemOutRequestData } from "@spt-aki/models/eft/hideout/IHideoutTakeItemOutRequestData"; -import { IHideoutTakeProductionRequestData } from "@spt-aki/models/eft/hideout/IHideoutTakeProductionRequestData"; -import { IHideoutToggleAreaRequestData } from "@spt-aki/models/eft/hideout/IHideoutToggleAreaRequestData"; -import { IHideoutUpgradeCompleteRequestData } from "@spt-aki/models/eft/hideout/IHideoutUpgradeCompleteRequestData"; -import { IHideoutUpgradeRequestData } from "@spt-aki/models/eft/hideout/IHideoutUpgradeRequestData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; +import { IHideoutScavCaseStartRequestData } from "@spt/models/eft/hideout/IHideoutScavCaseStartRequestData"; +import { IHideoutSingleProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutSingleProductionStartRequestData"; +import { IHideoutTakeItemOutRequestData } from "@spt/models/eft/hideout/IHideoutTakeItemOutRequestData"; +import { IHideoutTakeProductionRequestData } from "@spt/models/eft/hideout/IHideoutTakeProductionRequestData"; +import { IHideoutToggleAreaRequestData } from "@spt/models/eft/hideout/IHideoutToggleAreaRequestData"; +import { IHideoutUpgradeCompleteRequestData } from "@spt/models/eft/hideout/IHideoutUpgradeCompleteRequestData"; +import { IHideoutUpgradeRequestData } from "@spt/models/eft/hideout/IHideoutUpgradeRequestData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; export interface IHideoutCallbacks { upgrade(pmcData: IPmcData, body: IHideoutUpgradeRequestData, sessionID: string): IItemEventRouterResponse; upgradeComplete(pmcData: IPmcData, body: IHideoutUpgradeCompleteRequestData, sessionID: string): IItemEventRouterResponse; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IInraidCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IInraidCallbacks.d.ts index 4754c0c..b267942 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IInraidCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IInraidCallbacks.d.ts @@ -1,10 +1,10 @@ -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { INullResponseData } from "@spt-aki/models/eft/httpResponse/INullResponseData"; -import { IRegisterPlayerRequestData } from "@spt-aki/models/eft/inRaid/IRegisterPlayerRequestData"; -import { ISaveProgressRequestData } from "@spt-aki/models/eft/inRaid/ISaveProgressRequestData"; -import { IAkiProfile } from "@spt-aki/models/eft/profile/IAkiProfile"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { INullResponseData } from "@spt/models/eft/httpResponse/INullResponseData"; +import { IRegisterPlayerRequestData } from "@spt/models/eft/inRaid/IRegisterPlayerRequestData"; +import { ISaveProgressRequestData } from "@spt/models/eft/inRaid/ISaveProgressRequestData"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; export interface IInraidCallbacks { - onLoad(sessionID: string): IAkiProfile; + onLoad(sessionID: string): ISptProfile; registerPlayer(url: string, info: IRegisterPlayerRequestData, sessionID: string): INullResponseData; saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; getRaidEndState(): string; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IInsuranceCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IInsuranceCallbacks.d.ts index 649039a..2fae550 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IInsuranceCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IInsuranceCallbacks.d.ts @@ -1,9 +1,9 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IGetInsuranceCostRequestData } from "@spt-aki/models/eft/insurance/IGetInsuranceCostRequestData"; -import { IInsureRequestData } from "@spt-aki/models/eft/insurance/IInsureRequestData"; -import { IAkiProfile } from "@spt-aki/models/eft/profile/IAkiProfile"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IGetInsuranceCostRequestData } from "@spt/models/eft/insurance/IGetInsuranceCostRequestData"; +import { IInsureRequestData } from "@spt/models/eft/insurance/IInsureRequestData"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; export interface IInsuranceCallbacks { - onLoad(sessionID: string): IAkiProfile; + onLoad(sessionID: string): ISptProfile; getInsuranceCost(url: string, info: IGetInsuranceCostRequestData, sessionID: string): any; insure(pmcData: IPmcData, body: IInsureRequestData, sessionID: string): any; update(secondsSinceLastRun: number): boolean; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IInventoryCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IInventoryCallbacks.d.ts index 7abe819..079d37b 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IInventoryCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IInventoryCallbacks.d.ts @@ -1,21 +1,21 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IInventoryBindRequestData } from "@spt-aki/models/eft/inventory/IInventoryBindRequestData"; -import { IInventoryCreateMarkerRequestData } from "@spt-aki/models/eft/inventory/IInventoryCreateMarkerRequestData"; -import { IInventoryDeleteMarkerRequestData } from "@spt-aki/models/eft/inventory/IInventoryDeleteMarkerRequestData"; -import { IInventoryEditMarkerRequestData } from "@spt-aki/models/eft/inventory/IInventoryEditMarkerRequestData"; -import { IInventoryExamineRequestData } from "@spt-aki/models/eft/inventory/IInventoryExamineRequestData"; -import { IInventoryFoldRequestData } from "@spt-aki/models/eft/inventory/IInventoryFoldRequestData"; -import { IInventoryMergeRequestData } from "@spt-aki/models/eft/inventory/IInventoryMergeRequestData"; -import { IInventoryMoveRequestData } from "@spt-aki/models/eft/inventory/IInventoryMoveRequestData"; -import { IInventoryReadEncyclopediaRequestData } from "@spt-aki/models/eft/inventory/IInventoryReadEncyclopediaRequestData"; -import { IInventoryRemoveRequestData } from "@spt-aki/models/eft/inventory/IInventoryRemoveRequestData"; -import { IInventorySortRequestData } from "@spt-aki/models/eft/inventory/IInventorySortRequestData"; -import { IInventorySplitRequestData } from "@spt-aki/models/eft/inventory/IInventorySplitRequestData"; -import { IInventorySwapRequestData } from "@spt-aki/models/eft/inventory/IInventorySwapRequestData"; -import { IInventoryTagRequestData } from "@spt-aki/models/eft/inventory/IInventoryTagRequestData"; -import { IInventoryToggleRequestData } from "@spt-aki/models/eft/inventory/IInventoryToggleRequestData"; -import { IInventoryTransferRequestData } from "@spt-aki/models/eft/inventory/IInventoryTransferRequestData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IInventoryBindRequestData } from "@spt/models/eft/inventory/IInventoryBindRequestData"; +import { IInventoryCreateMarkerRequestData } from "@spt/models/eft/inventory/IInventoryCreateMarkerRequestData"; +import { IInventoryDeleteMarkerRequestData } from "@spt/models/eft/inventory/IInventoryDeleteMarkerRequestData"; +import { IInventoryEditMarkerRequestData } from "@spt/models/eft/inventory/IInventoryEditMarkerRequestData"; +import { IInventoryExamineRequestData } from "@spt/models/eft/inventory/IInventoryExamineRequestData"; +import { IInventoryFoldRequestData } from "@spt/models/eft/inventory/IInventoryFoldRequestData"; +import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData"; +import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData"; +import { IInventoryReadEncyclopediaRequestData } from "@spt/models/eft/inventory/IInventoryReadEncyclopediaRequestData"; +import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData"; +import { IInventorySortRequestData } from "@spt/models/eft/inventory/IInventorySortRequestData"; +import { IInventorySplitRequestData } from "@spt/models/eft/inventory/IInventorySplitRequestData"; +import { IInventorySwapRequestData } from "@spt/models/eft/inventory/IInventorySwapRequestData"; +import { IInventoryTagRequestData } from "@spt/models/eft/inventory/IInventoryTagRequestData"; +import { IInventoryToggleRequestData } from "@spt/models/eft/inventory/IInventoryToggleRequestData"; +import { IInventoryTransferRequestData } from "@spt/models/eft/inventory/IInventoryTransferRequestData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; export interface IInventoryCallbacks { moveItem(pmcData: IPmcData, body: IInventoryMoveRequestData, sessionID: string): IItemEventRouterResponse; removeItem(pmcData: IPmcData, body: IInventoryRemoveRequestData, sessionID: string): IItemEventRouterResponse; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IItemEventCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IItemEventCallbacks.d.ts index 6778e54..98fdb0b 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IItemEventCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IItemEventCallbacks.d.ts @@ -1,6 +1,6 @@ -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { IItemEventRouterRequest } from "@spt-aki/models/eft/itemEvent/IItemEventRouterRequest"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { IItemEventRouterRequest } from "@spt/models/eft/itemEvent/IItemEventRouterRequest"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; export interface IItemEventCallbacks { handleEvents(url: string, info: IItemEventRouterRequest, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/ILauncherCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/ILauncherCallbacks.d.ts index d37e58c..d01ae52 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/ILauncherCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/ILauncherCallbacks.d.ts @@ -1,8 +1,8 @@ -import { IChangeRequestData } from "@spt-aki/models/eft/launcher/IChangeRequestData"; -import { IGetMiniProfileRequestData } from "@spt-aki/models/eft/launcher/IGetMiniProfileRequestData"; -import { ILoginRequestData } from "@spt-aki/models/eft/launcher/ILoginRequestData"; -import { IRegisterData } from "@spt-aki/models/eft/launcher/IRegisterData"; -import { IRemoveProfileData } from "@spt-aki/models/eft/launcher/IRemoveProfileData"; +import { IChangeRequestData } from "@spt/models/eft/launcher/IChangeRequestData"; +import { IGetMiniProfileRequestData } from "@spt/models/eft/launcher/IGetMiniProfileRequestData"; +import { ILoginRequestData } from "@spt/models/eft/launcher/ILoginRequestData"; +import { IRegisterData } from "@spt/models/eft/launcher/IRegisterData"; +import { IRemoveProfileData } from "@spt/models/eft/launcher/IRemoveProfileData"; export interface ILauncherCallbacks { connect(): string; login(url: string, info: ILoginRequestData, sessionID: string): string; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/ILocationCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/ILocationCallbacks.d.ts index a031a29..e51c723 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/ILocationCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/ILocationCallbacks.d.ts @@ -1,7 +1,7 @@ -import { ILocationBase } from "@spt-aki/models/eft/common/ILocationBase"; -import { ILocationsGenerateAllResponse } from "@spt-aki/models/eft/common/ILocationsSourceDestinationBase"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { IGetLocationRequestData } from "@spt-aki/models/eft/location/IGetLocationRequestData"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { ILocationsGenerateAllResponse } from "@spt/models/eft/common/ILocationsSourceDestinationBase"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { IGetLocationRequestData } from "@spt/models/eft/location/IGetLocationRequestData"; export interface ILocationCallbacks { getLocationData(url: string, info: any, sessionID: string): IGetBodyResponseData; getLocation(url: string, info: IGetLocationRequestData, sessionID: string): IGetBodyResponseData; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/INoteCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/INoteCallbacks.d.ts index aec8099..5ea2c96 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/INoteCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/INoteCallbacks.d.ts @@ -1,6 +1,6 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { INoteActionData } from "@spt-aki/models/eft/notes/INoteActionData"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { INoteActionData } from "@spt/models/eft/notes/INoteActionData"; export interface INoteCallbacks { addNote(pmcData: IPmcData, body: INoteActionData, sessionID: string): IItemEventRouterResponse; editNote(pmcData: IPmcData, body: INoteActionData, sessionID: string): IItemEventRouterResponse; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/INotifierCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/INotifierCallbacks.d.ts index 60b3695..9f1fae1 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/INotifierCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/INotifierCallbacks.d.ts @@ -1,7 +1,7 @@ -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { INotifierChannel } from "@spt-aki/models/eft/notifier/INotifier"; -import { ISelectProfileRequestData } from "@spt-aki/models/eft/notifier/ISelectProfileRequestData"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IUIDRequestData } from "@spt/models/eft/common/request/IUIDRequestData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { INotifierChannel } from "@spt/models/eft/notifier/INotifier"; export interface INotifierCallbacks { /** * If we don't have anything to send, it's ok to not send anything back @@ -12,6 +12,6 @@ export interface INotifierCallbacks { sendNotification(sessionID: string, req: any, resp: any, data: any): void; getNotifier(url: string, info: any, sessionID: string): IGetBodyResponseData; createNotifierChannel(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - selectProfile(url: string, info: ISelectProfileRequestData, sessionID: string): IGetBodyResponseData; + selectProfile(url: string, info: IUIDRequestData, sessionID: string): IGetBodyResponseData; notify(url: string, info: any, sessionID: string): string; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IPresetBuildCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IPresetBuildCallbacks.d.ts index 886cc9c..b0d75bd 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IPresetBuildCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IPresetBuildCallbacks.d.ts @@ -1,8 +1,8 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IPresetBuildActionRequestData } from "@spt-aki/models/eft/presetBuild/IPresetBuildActionRequestData"; -import { IWeaponBuild } from "@spt-aki/models/eft/profile/IAkiProfile"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IPresetBuildActionRequestData } from "@spt/models/eft/presetBuild/IPresetBuildActionRequestData"; +import { IWeaponBuild } from "@spt/models/eft/profile/ISptProfile"; export interface IPresetBuildCallbacks { getHandbookUserlist(url: string, info: any, sessionID: string): IGetBodyResponseData; saveWeaponBuild(pmcData: IPmcData, body: IPresetBuildActionRequestData, sessionID: string): IItemEventRouterResponse; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IProfileCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IProfileCallbacks.d.ts index f05532a..f769cfd 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IProfileCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IProfileCallbacks.d.ts @@ -1,12 +1,12 @@ -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { INullResponseData } from "@spt-aki/models/eft/httpResponse/INullResponseData"; -import { IProfileChangeNicknameRequestData } from "@spt-aki/models/eft/profile/IProfileChangeNicknameRequestData"; -import { IProfileChangeVoiceRequestData } from "@spt-aki/models/eft/profile/IProfileChangeVoiceRequestData"; -import { IProfileCreateRequestData } from "@spt-aki/models/eft/profile/IProfileCreateRequestData"; -import { ISearchFriendRequestData } from "@spt-aki/models/eft/profile/ISearchFriendRequestData"; -import { ISearchFriendResponse } from "@spt-aki/models/eft/profile/ISearchFriendResponse"; -import { IValidateNicknameRequestData } from "@spt-aki/models/eft/profile/IValidateNicknameRequestData"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { INullResponseData } from "@spt/models/eft/httpResponse/INullResponseData"; +import { IProfileChangeNicknameRequestData } from "@spt/models/eft/profile/IProfileChangeNicknameRequestData"; +import { IProfileChangeVoiceRequestData } from "@spt/models/eft/profile/IProfileChangeVoiceRequestData"; +import { IProfileCreateRequestData } from "@spt/models/eft/profile/IProfileCreateRequestData"; +import { ISearchFriendRequestData } from "@spt/models/eft/profile/ISearchFriendRequestData"; +import { ISearchFriendResponse } from "@spt/models/eft/profile/ISearchFriendResponse"; +import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; export interface IProfileCallbacks { onLoad(sessionID: string): any; createProfile(url: string, info: IProfileCreateRequestData, sessionID: string): IGetBodyResponseData; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IQuestCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IQuestCallbacks.d.ts index 546191f..1a688a7 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IQuestCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IQuestCallbacks.d.ts @@ -1,14 +1,14 @@ -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IQuest } from "@spt-aki/models/eft/common/tables/IQuest"; -import { IPmcDataRepeatableQuest } from "@spt-aki/models/eft/common/tables/IRepeatableQuests"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IAcceptQuestRequestData } from "@spt-aki/models/eft/quests/IAcceptQuestRequestData"; -import { ICompleteQuestRequestData } from "@spt-aki/models/eft/quests/ICompleteQuestRequestData"; -import { IHandoverQuestRequestData } from "@spt-aki/models/eft/quests/IHandoverQuestRequestData"; -import { IListQuestsRequestData } from "@spt-aki/models/eft/quests/IListQuestsRequestData"; -import { IRepeatableQuestChangeRequest } from "@spt-aki/models/eft/quests/IRepeatableQuestChangeRequest"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IQuest } from "@spt/models/eft/common/tables/IQuest"; +import { IPmcDataRepeatableQuest } from "@spt/models/eft/common/tables/IRepeatableQuests"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IAcceptQuestRequestData } from "@spt/models/eft/quests/IAcceptQuestRequestData"; +import { ICompleteQuestRequestData } from "@spt/models/eft/quests/ICompleteQuestRequestData"; +import { IHandoverQuestRequestData } from "@spt/models/eft/quests/IHandoverQuestRequestData"; +import { IListQuestsRequestData } from "@spt/models/eft/quests/IListQuestsRequestData"; +import { IRepeatableQuestChangeRequest } from "@spt/models/eft/quests/IRepeatableQuestChangeRequest"; export interface IQuestCallbacks { changeRepeatableQuest(pmcData: IPmcData, body: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse; acceptQuest(pmcData: IPmcData, body: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IRagfairCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IRagfairCallbacks.d.ts index 1157349..dcad1ee 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IRagfairCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IRagfairCallbacks.d.ts @@ -1,13 +1,13 @@ -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IAddOfferRequestData } from "@spt-aki/models/eft/ragfair/IAddOfferRequestData"; -import { IExtendOfferRequestData } from "@spt-aki/models/eft/ragfair/IExtendOfferRequestData"; -import { IGetItemPriceResult } from "@spt-aki/models/eft/ragfair/IGetItemPriceResult"; -import { IGetMarketPriceRequestData } from "@spt-aki/models/eft/ragfair/IGetMarketPriceRequestData"; -import { IRemoveOfferRequestData } from "@spt-aki/models/eft/ragfair/IRemoveOfferRequestData"; -import { ISearchRequestData } from "@spt-aki/models/eft/ragfair/ISearchRequestData"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IAddOfferRequestData } from "@spt/models/eft/ragfair/IAddOfferRequestData"; +import { IExtendOfferRequestData } from "@spt/models/eft/ragfair/IExtendOfferRequestData"; +import { IGetItemPriceResult } from "@spt/models/eft/ragfair/IGetItemPriceResult"; +import { IGetMarketPriceRequestData } from "@spt/models/eft/ragfair/IGetMarketPriceRequestData"; +import { IRemoveOfferRequestData } from "@spt/models/eft/ragfair/IRemoveOfferRequestData"; +import { ISearchRequestData } from "@spt/models/eft/ragfair/ISearchRequestData"; export interface IRagfairCallbacks { load(): void; search(url: string, info: ISearchRequestData, sessionID: string): IGetBodyResponseData; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IRepairCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IRepairCallbacks.d.ts index b83fde8..e8d4fe1 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IRepairCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IRepairCallbacks.d.ts @@ -1,7 +1,7 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IRepairActionDataRequest } from "@spt-aki/models/eft/repair/IRepairActionDataRequest"; -import { ITraderRepairActionDataRequest } from "@spt-aki/models/eft/repair/ITraderRepairActionDataRequest"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IRepairActionDataRequest } from "@spt/models/eft/repair/IRepairActionDataRequest"; +import { ITraderRepairActionDataRequest } from "@spt/models/eft/repair/ITraderRepairActionDataRequest"; export interface IRepairCallbacks { traderRepair(pmcData: IPmcData, body: ITraderRepairActionDataRequest, sessionID: string): IItemEventRouterResponse; repair(pmcData: IPmcData, body: IRepairActionDataRequest, sessionID: string): IItemEventRouterResponse; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/ITradeCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/ITradeCallbacks.d.ts index b6daa5d..9b71d93 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/ITradeCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/ITradeCallbacks.d.ts @@ -1,7 +1,7 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IProcessBaseTradeRequestData } from "@spt-aki/models/eft/trade/IProcessBaseTradeRequestData"; -import { IProcessRagfairTradeRequestData } from "@spt-aki/models/eft/trade/IProcessRagfairTradeRequestData"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IProcessBaseTradeRequestData } from "@spt/models/eft/trade/IProcessBaseTradeRequestData"; +import { IProcessRagfairTradeRequestData } from "@spt/models/eft/trade/IProcessRagfairTradeRequestData"; export interface ITradeCallbacks { processTrade(pmcData: IPmcData, body: IProcessBaseTradeRequestData, sessionID: string): IItemEventRouterResponse; processRagfairTrade(pmcData: IPmcData, body: IProcessRagfairTradeRequestData, sessionID: string): IItemEventRouterResponse; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/ITraderCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/ITraderCallbacks.d.ts index 23cd532..963e523 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/ITraderCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/ITraderCallbacks.d.ts @@ -1,6 +1,6 @@ -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { ITraderAssort, ITraderBase } from "@spt-aki/models/eft/common/tables/ITrader"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { ITraderAssort, ITraderBase } from "@spt/models/eft/common/tables/ITrader"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; export interface ITraderCallbacks { load(): void; getTraderSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IWeatherCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IWeatherCallbacks.d.ts index 1ba5b47..5713469 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IWeatherCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IWeatherCallbacks.d.ts @@ -1,5 +1,5 @@ -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; export interface IWeatherCallbacks { getWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IWishlistCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IWishlistCallbacks.d.ts index 3ab5c68..16f056d 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IWishlistCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IWishlistCallbacks.d.ts @@ -1,6 +1,6 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IWishlistActionData } from "@spt-aki/models/eft/wishlist/IWishlistActionData"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IWishlistActionData } from "@spt/models/eft/wishlist/IWishlistActionData"; export interface IWishlistCallbacks { addToWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; removeFromWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IAirdropConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IAirdropConfig.d.ts index 1975cf7..d438f00 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IAirdropConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IAirdropConfig.d.ts @@ -1,8 +1,8 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; -import { AirdropTypeEnum } from "@spt-aki/models/enums/AirdropType"; -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { MinMax } from "@spt/models/common/MinMax"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IAirdropConfig extends IBaseConfig { - kind: "aki-airdrop"; + kind: "spt-airdrop"; airdropChancePercent: AirdropChancePercent; airdropTypeWeightings: Record; /** Lowest point plane will fly at */ @@ -33,11 +33,14 @@ export interface AirdropChancePercent { interchange: number; reserve: number; tarkovStreets: number; + sandbox: number; } /** Loot inside crate */ export interface AirdropLoot { /** Min/max of weapons inside crate */ - presetCount?: MinMax; + weaponPresetCount?: MinMax; + /** Min/max of armors (head/chest/rig) inside crate */ + armorPresetCount?: MinMax; /** Min/max of items inside crate */ itemCount: MinMax; /** Min/max of sealed weapon boxes inside crate */ diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IBTRConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IBTRConfig.d.ts new file mode 100644 index 0000000..2f56f73 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IBTRConfig.d.ts @@ -0,0 +1,13 @@ +import { MinMax } from "@spt/models/common/MinMax"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; +export interface IBTRConfig extends IBaseConfig { + kind: "spt-btr"; + /** How fast the BTR moves */ + moveSpeed: number; + /** How long the cover fire service lasts for */ + coverFireTime: number; + /** How long the BTR waits at every point in its path */ + pointWaitTime: MinMax; + /** How long after purchasing the taxi service before the BTR leaves */ + taxiWaitTime: number; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IBaseConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IBaseConfig.d.ts index 8b6ba88..8780d43 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IBaseConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IBaseConfig.d.ts @@ -1,3 +1,7 @@ export interface IBaseConfig { kind: string; } +export interface IRunIntervalValues { + inRaid: number; + outOfRaid: number; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IBotConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IBotConfig.d.ts index 517ec27..b8c782a 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IBotConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IBotConfig.d.ts @@ -1,19 +1,19 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; -import { GenerationData } from "@spt-aki/models/eft/common/tables/IBotType"; -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; -import { IBotDurability } from "@spt-aki/models/spt/config/IBotDurability"; +import { MinMax } from "@spt/models/common/MinMax"; +import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; +import { IBotDurability } from "@spt/models/spt/config/IBotDurability"; export interface IBotConfig extends IBaseConfig { - kind: "aki-bot"; + kind: "spt-bot"; /** How many variants of each bot should be generated on raid start */ presetBatch: PresetBatch; + /** Bot roles that should not have PMC types (pmcBEAR/pmcUSEC) added as enemies to */ + botsToNotAddPMCsAsEnemiesTo: string[]; /** What bot types should be classified as bosses */ bosses: string[]; /** Control weapon/armor durability min/max values for each bot type */ durability: IBotDurability; /** Controls the percentage values of randomization item resources */ lootItemResourceRandomization: Record; - /** Control the weighting of how expensive an average loot item is on a PMC or Scav */ - lootNValue: LootNvalue; /** Control what bots are added to a bots revenge list key: bottype, value: bottypes to revenge on seeing their death */ revenge: Record; /** Control how many items are allowed to spawn on a bot @@ -33,6 +33,22 @@ export interface IBotConfig extends IBaseConfig { chanceAssaultScavHasPlayerScavName: number; /** How many stacks of secret ammo should a bot have in its bot secure container */ secureContainerAmmoStackCount: number; + /** Bot roles in this array will be given a dog tag on generation */ + botRolesWithDogTags: string[]; + /** Settings to control the items that get added into wallets on bots */ + walletLoot: IWalletLootSettings; + /** Currency weights, Keyed by botrole / currency */ + currencyStackSize: Record>>; + /** Tpls for low profile gas blocks */ + lowProfileGasBlockTpls: string[]; + /** What bottypes should be excluded from having loot generated on them (backpack/pocket/vest) does not disable food/drink/special/ */ + disableLootOnBotTypes: string[]; + assaultToBossConversion: IAssaultToBossConversion; +} +export interface IAssaultToBossConversion { + bossConvertEnabled: boolean; + bossesToConvertToWeights: Record; + bossConvertMinMax: Record; } /** Number of bots to generate and store in cache on raid start per bot type */ export interface PresetBatch { @@ -70,12 +86,17 @@ export interface PresetBatch { crazyAssaultEvent: number; bossBoar: number; bossBoarSniper: number; - sptUsec: number; - sptBear: number; + pmcUSEC: number; + pmcBEAR: number; } -export interface LootNvalue { - scav: number; - pmc: number; +export interface IWalletLootSettings { + /** Chance wallets have loot in them */ + chancePercent: number; + itemCount: MinMax; + stackSizeWeight: Record; + currencyWeight: Record; + /** What wallets will have money in them */ + walletTplPool: string[]; } export interface EquipmentFilters { /** Limits for mod types per weapon .e.g. scopes */ @@ -94,6 +115,11 @@ export interface EquipmentFilters { nvgIsActiveChanceDayPercent?: number; /** Chance NODS are down/active during the night */ nvgIsActiveChanceNightPercent?: number; + forceOnlyArmoredRigWhenNoArmor?: boolean; + /** Should plates be filtered by level */ + filterPlatesByLevel?: boolean; + /** What additional slot ids should be seen as required when choosing a mod to add to a weapon */ + weaponSlotIdsToMakeRequired?: string[]; /** Adjust weighting/chances of items on bot by level of bot */ randomisation: RandomisationDetails[]; /** Blacklist equipment by level of bot */ @@ -105,7 +131,8 @@ export interface EquipmentFilters { /** Same as weightingAdjustments but based on player level instead of bot level */ weightingAdjustmentsByPlayerLevel?: WeightingAdjustmentDetails[]; /** Should the stock mod be forced to spawn on bot */ - forceStock: boolean; + forceStock?: boolean; + armorPlateWeighting?: IArmorPlateWeights[]; } export interface ModLimits { /** How many scopes are allowed on a weapon - hard coded to work with OPTIC_SCOPE, ASSAULT_SCOPE, COLLIMATOR, COMPACT_COLLIMATOR */ @@ -117,14 +144,16 @@ export interface RandomisationDetails { /** Between what levels do these randomisation setting apply to */ levelRange: MinMax; generation?: Record; - /** Mod slots that should be fully randomisate -ignores mods from bottype.json */ + /** Mod slots that should be fully randomised -ignores mods from bottype.json and instaed creates a pool using items.json */ randomisedWeaponModSlots?: string[]; /** Armor slots that should be randomised e.g. 'Headwear, Armband' */ randomisedArmorSlots?: string[]; /** Equipment chances */ equipment?: Record; - /** Mod chances */ - mods?: Record; + /** Weapon mod chances */ + weaponMods?: Record; + /** Equipment mod chances */ + equipmentMods?: Record; } export interface EquipmentFilterDetails { /** Between what levels do these equipment filter setting apply to */ @@ -138,22 +167,25 @@ export interface WeightingAdjustmentDetails { /** Between what levels do these weight settings apply to */ levelRange: MinMax; /** Key: ammo type e.g. Caliber556x45NATO, value: item tpl + weight */ - ammo?: AdjustmentDetails; + ammo?: IAdjustmentDetails; /** Key: equipment slot e.g. TacticalVest, value: item tpl + weight */ - equipment?: AdjustmentDetails; + equipment?: IAdjustmentDetails; /** Key: clothing slot e.g. feet, value: item tpl + weight */ - clothing?: AdjustmentDetails; + clothing?: IAdjustmentDetails; } -export interface AdjustmentDetails { +export interface IAdjustmentDetails { add: Record>; edit: Record>; } +export interface IArmorPlateWeights extends Record { + levelRange: MinMax; +} export interface IRandomisedResourceDetails { food: IRandomisedResourceValues; meds: IRandomisedResourceValues; } export interface IRandomisedResourceValues { - /** Minimum percent of item to randomized between min and max resource*/ + /** Minimum percent of item to randomized between min and max resource */ resourcePercent: number; /** Chance for randomization to not occur */ chanceMaxResourcePercent: number; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IBotDurability.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IBotDurability.d.ts index a4ff53c..728db97 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IBotDurability.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IBotDurability.d.ts @@ -7,6 +7,9 @@ export interface IBotDurability { cursedassault: BotDurability; marksman: BotDurability; pmcbot: BotDurability; + arenafighterevent: BotDurability; + arenafighter: BotDurability; + crazyassaultevent: BotDurability; exusec: BotDurability; gifter: BotDurability; sectantpriest: BotDurability; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ICoreConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ICoreConfig.d.ts index 68fbc14..6d086f7 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ICoreConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ICoreConfig.d.ts @@ -1,23 +1,59 @@ -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ICoreConfig extends IBaseConfig { - kind: "aki-core"; - akiVersion: string; + kind: "spt-core"; + sptVersion: string; projectName: string; compatibleTarkovVersion: string; serverName: string; profileSaveIntervalSeconds: number; sptFriendNickname: string; + allowProfileWipe: boolean; + bsgLogging: IBsgLogging; + release: IRelease; fixes: IGameFixes; features: IServerFeatures; /** Commit hash build server was created from */ commit?: string; /** Timestamp of server build */ buildTime?: string; + /** Server locale keys that will be added to the bottom of the startup watermark */ + customWatermarkLocaleKeys?: string[]; +} +export interface IBsgLogging { + /** + * verbosity of what to log, yes I know this is backwards, but its how nlog deals with ordinals. + * complain to them about it! In all cases, better exceptions will be logged. + * WARNING: trace-info logging will quickly create log files in the megabytes. + * 0 - trace + * 1 - debug + * 2 - info + * 3 - warn + * 4 - error + * 5 - fatal + * 6 - off + */ + verbosity: number; + sendToServer: boolean; +} +export interface IRelease { + betaDisclaimerText?: string; + betaDisclaimerAcceptText: string; + serverModsLoadedText: string; + serverModsLoadedDebugText: string; + clientModsLoadedText: string; + clientModsLoadedDebugText: string; + illegalPluginsLoadedText: string; + illegalPluginsExceptionText: string; + releaseSummaryText?: string; + isBeta?: boolean; + isModdable?: boolean; + isModded: boolean; + betaDisclaimerTimeoutDelay: number; } export interface IGameFixes { /** Shotguns use a different value than normal guns causing huge pellet dispersion */ fixShotgunDispersion: boolean; - /** Remove items added by mods when the mod no longer exists - can fix dead profiles stuck at game load*/ + /** Remove items added by mods when the mod no longer exists - can fix dead profiles stuck at game load */ removeModItemsFromProfile: boolean; /** Fix issues that cause the game to not start due to inventory item issues */ fixProfileBreakingInventoryItemIssues: boolean; @@ -26,11 +62,14 @@ export interface IServerFeatures { autoInstallModDependencies: boolean; compressProfile: boolean; chatbotFeatures: IChatbotFeatures; + /** Keyed to profile type e.g. "Standard" or "SPT Developer" */ + createNewProfileTypesBlacklist: string[]; } export interface IChatbotFeatures { sptFriendEnabled: boolean; commandoEnabled: boolean; commandoFeatures: ICommandoFeatures; + commandUseLimits: Record; } export interface ICommandoFeatures { giveCommandEnabled: boolean; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IGiftsConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IGiftsConfig.d.ts index b73761b..736c4b7 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IGiftsConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IGiftsConfig.d.ts @@ -1,12 +1,12 @@ -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { IUserDialogInfo } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { GiftSenderType } from "@spt-aki/models/enums/GiftSenderType"; -import { SeasonalEventType } from "@spt-aki/models/enums/SeasonalEventType"; -import { Traders } from "@spt-aki/models/enums/Traders"; -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; -import { IProfileChangeEvent } from "../dialog/ISendMessageDetails"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; +import { GiftSenderType } from "@spt/models/enums/GiftSenderType"; +import { SeasonalEventType } from "@spt/models/enums/SeasonalEventType"; +import { Traders } from "@spt/models/enums/Traders"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; +import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails"; export interface IGiftsConfig extends IBaseConfig { - kind: "aki-gifts"; + kind: "spt-gifts"; gifts: Record; } export interface Gift { @@ -28,4 +28,5 @@ export interface Gift { collectionTimeHours: number; /** Optional, can be used to change profile settings like level/skills */ profileChangeEvents?: IProfileChangeEvent[]; + maxToSendPlayer?: number; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IHealthConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IHealthConfig.d.ts index 49b405f..b86c208 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IHealthConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IHealthConfig.d.ts @@ -1,6 +1,6 @@ -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IHealthConfig extends IBaseConfig { - kind: "aki-health"; + kind: "spt-health"; healthMultipliers: HealthMultipliers; save: Save; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IHideoutConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IHideoutConfig.d.ts index 5386fb3..c1967c0 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IHideoutConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IHideoutConfig.d.ts @@ -1,7 +1,14 @@ -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { IBaseConfig, IRunIntervalValues } from "@spt/models/spt/config/IBaseConfig"; export interface IHideoutConfig extends IBaseConfig { - kind: "aki-hideout"; + kind: "spt-hideout"; + /** How many seconds should pass before hideout crafts / fuel usage is checked and procesed */ runIntervalSeconds: number; + /** Default values used to hydrate `runIntervalSeconds` with */ + runIntervalValues: IRunIntervalValues; hoursForSkillCrafting: number; expCraftAmount: number; + overrideCraftTimeSeconds: number; + overrideBuildTimeSeconds: number; + /** Only process a profiles hideout crafts when it has been active in the last x minutes */ + updateProfileHideoutWhenActiveWithinMinutes: number; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IHttpConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IHttpConfig.d.ts index 9007245..0f42e77 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IHttpConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IHttpConfig.d.ts @@ -1,10 +1,14 @@ -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IHttpConfig extends IBaseConfig { - webSocketPingDelayMs: number; - kind: "aki-http"; + kind: "spt-http"; + /** Address used by webserver */ ip: string; port: number; + /** Address used by game client to connect to */ + backendIp: string; + backendPort: string; + webSocketPingDelayMs: number; logRequests: boolean; - /** e.g. "Aki_Data/Server/images/traders/579dc571d53a0658a154fbec.png": "Aki_Data/Server/images/traders/NewTraderImage.png" */ + /** e.g. "SPT_Data/Server/images/traders/579dc571d53a0658a154fbec.png": "SPT_Data/Server/images/traders/NewTraderImage.png" */ serverImagePathOverride: Record; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IInRaidConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IInRaidConfig.d.ts index 5b60526..7d6befd 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IInRaidConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IInRaidConfig.d.ts @@ -1,6 +1,6 @@ -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IInRaidConfig extends IBaseConfig { - kind: "aki-inraid"; + kind: "spt-inraid"; MIAOnRaidEnd: boolean; /** Overrides to apply to the pre-raid settings screen */ raidMenuSettings: RaidMenuSettings; @@ -16,8 +16,12 @@ export interface IInRaidConfig extends IBaseConfig { coopExtractBaseStandingGain: number; /** Fence rep gain when successfully extracting as pscav */ scavExtractGain: number; + /** The likelihood of PMC eliminating a minimum of 2 scavs while you engage them as a pscav. */ + pmcKillProbabilityForScavGain: number; /** On death should items in your secure keep their Find in raid status regardless of how you finished the raid */ keepFiRSecureContainerOnDeath: boolean; + /** Percentage chance a player scav hot is hostile to the player when scavving */ + playerScavHostileChancePercent: number; } export interface RaidMenuSettings { aiAmount: string; @@ -26,9 +30,10 @@ export interface RaidMenuSettings { scavWars: boolean; taggedAndCursed: boolean; enablePve: boolean; + randomWeather: boolean; + randomTime: boolean; } export interface Save { /** Should loot gained from raid be saved */ loot: boolean; - durability: boolean; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IInsuranceConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IInsuranceConfig.d.ts index ffd0245..2bbd7b3 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IInsuranceConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IInsuranceConfig.d.ts @@ -1,14 +1,16 @@ -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IInsuranceConfig extends IBaseConfig { - kind: "aki-insurance"; - /** Insurance price multiplier */ - insuranceMultiplier: Record; + kind: "spt-insurance"; /** Chance item is returned as insurance, keyed by trader id */ returnChancePercent: Record; /** Item slots that should never be returned as insurance */ blacklistedEquipment: string[]; + /** Some slots should always be removed, e.g. 'cartridges' */ + slotIdsToAlwaysRemove: string[]; /** Override to control how quickly insurance is processed/returned in second */ returnTimeOverrideSeconds: number; /** How often server should process insurance in seconds */ runIntervalSeconds: number; + minAttachmentRoublePriceToBeTaken: number; + chanceNoAttachmentsTakenPercent: number; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IInventoryConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IInventoryConfig.d.ts index 6f1498d..b489393 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IInventoryConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IInventoryConfig.d.ts @@ -1,13 +1,15 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { MinMax } from "@spt/models/common/MinMax"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IInventoryConfig extends IBaseConfig { - kind: "aki-inventory"; + kind: "spt-inventory"; /** Should new items purchased by flagged as found in raid */ newItemsMarkedFound: boolean; randomLootContainers: Record; sealedAirdropContainer: ISealedAirdropContainerSettings; /** Contains item tpls that the server should consider money and treat the same as roubles/euros/dollars */ customMoneyTpls: string[]; + /** Multipliers for skill gain when inside menus, NOT in-game */ + skillGainMultiplers: Record; } export interface RewardDetails { rewardCount: number; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IItemConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IItemConfig.d.ts index 506ee76..b9dfaea 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IItemConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IItemConfig.d.ts @@ -1,8 +1,13 @@ -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IItemConfig extends IBaseConfig { - kind: "aki-item"; + kind: "spt-item"; /** Items that should be globally blacklisted */ blacklist: string[]; + /** Items that should not be lootable from any location */ + lootableItemBlacklist: string[]; + /** items that should not be given as rewards */ + rewardItemBlacklist: string[]; /** Items that can only be found on bosses */ bossItems: string[]; + handbookPriceOverride: Record; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ILocaleConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ILocaleConfig.d.ts index 78e1cfb..c3de13e 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ILocaleConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ILocaleConfig.d.ts @@ -1,10 +1,13 @@ -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILocaleConfig extends IBaseConfig { - kind: "aki-locale"; + kind: "spt-locale"; /** e.g. ru/en/cn/fr etc, or 'system', will take computer locale setting */ gameLocale: string; /** e.g. ru/en/cn/fr etc, or 'system', will take computer locale setting */ serverLocale: string; /** Languages server can be translated into */ serverSupportedLocales: string[]; + fallbacks: { + [locale: string]: string; + }; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ILocationConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ILocationConfig.d.ts index 5c804a4..1e113b2 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ILocationConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ILocationConfig.d.ts @@ -1,8 +1,8 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; -import { BossLocationSpawn, Wave } from "@spt-aki/models/eft/common/ILocationBase"; -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { MinMax } from "@spt/models/common/MinMax"; +import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILocationConfig extends IBaseConfig { - kind: "aki-location"; + kind: "spt-location"; /** Waves with a min/max of the same value don't spawn any bots, bsg only spawn the difference between min and max */ fixEmptyBotWavesSettings: IFixEmptyBotWavesSettings; /** Rogues are classified as bosses and spawn immediatly, this can result in no scavs spawning, delay rogues spawning to allow scavs to spawn first */ @@ -21,23 +21,34 @@ export interface ILocationConfig extends IBaseConfig { fitLootIntoContainerAttempts: number; /** Add all possible zones to each maps `OpenZones` property */ addOpenZonesToAllMaps: boolean; - /** Allow addition of custom bot waves designed by SPT to be added to maps - defined in configs/location.json.customWaves*/ + /** Allow addition of custom bot waves designed by SPT to be added to maps - defined in configs/location.json.customWaves */ addCustomBotWavesToMaps: boolean; /** Should the limits defined inside botTypeLimits to appled to locations on game start */ enableBotTypeLimits: boolean; - /** Add limits to a locations base.MinMaxBots array if enableBotTypeLimits is true*/ + /** Add limits to a locations base.MinMaxBots array if enableBotTypeLimits is true */ botTypeLimits: Record; /** container randomisation settings */ containerRandomisationSettings: IContainerRandomistionSettings; - /** How full must a random loose magazine be %*/ + /** How full must a random loose magazine be % */ minFillLooseMagazinePercent: number; - /** How full must a random static magazine be %*/ + /** How full must a random static magazine be % */ minFillStaticMagazinePercent: number; allowDuplicateItemsInStaticContainers: boolean; + /** Chance loose magazines have ammo in them TODO - rename to dynamicMagazineLootHasAmmoChancePercent */ + magazineLootHasAmmoChancePercent: number; + /** Chance static magazines have ammo in them */ + staticMagazineLootHasAmmoChancePercent: number; /** Key: map, value: loose loot ids to ignore */ looseLootBlacklist: Record; - /** Key: map, value: settings to control how long scav raids are*/ + /** Key: map, value: settings to control how long scav raids are */ scavRaidTimeSettings: IScavRaidTimeSettings; + /** Settings to adjust mods for lootable equipment in raid */ + equipmentLootSettings: IEquipmentLootSettings; + /** Sets the max Patrol Value of the Boxzone on the map Ground Zero */ + sandboxMaxPatrolvalue: number; +} +export interface IEquipmentLootSettings { + modSpawnChancePercent: Record; } export interface IFixEmptyBotWavesSettings { enabled: boolean; @@ -78,6 +89,7 @@ export interface LootMultiplier { tarkovstreets: number; terminal: number; town: number; + sandbox: number; } export interface IContainerRandomistionSettings { enabled: boolean; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ILootConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ILootConfig.d.ts index 003d6c6..e22c3ea 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ILootConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ILootConfig.d.ts @@ -1,7 +1,7 @@ -import { Spawnpoint } from "@spt-aki/models/eft/common/ILooseLoot"; -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { Spawnpoint } from "@spt/models/eft/common/ILooseLoot"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILootConfig extends IBaseConfig { - kind: "aki-loot"; + kind: "spt-loot"; /** Spawn positions to add into a map, key=mapid */ looseLoot: Record; /** Loose loot probability adjustments to apply on game start */ diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ILostOnDeathConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ILostOnDeathConfig.d.ts index ad7e7b9..8574646 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ILostOnDeathConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ILostOnDeathConfig.d.ts @@ -1,6 +1,6 @@ -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILostOnDeathConfig extends IBaseConfig { - kind: "aki-lostondeath"; + kind: "spt-lostondeath"; /** What equipment in each slot should be lost on death */ equipment: Equipment; /** Should special slot items be removed from quest inventory on death e.g. wifi camera/markers */ @@ -16,6 +16,7 @@ export interface Equipment { ArmorVest: boolean; Eyewear: boolean; TacticalVest: boolean; + PocketItems: boolean; Backpack: boolean; Holster: boolean; FirstPrimaryWeapon: boolean; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IMatchConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IMatchConfig.d.ts index dc7a8cb..f6a9b4c 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IMatchConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IMatchConfig.d.ts @@ -1,5 +1,5 @@ -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IMatchConfig extends IBaseConfig { - kind: "aki-match"; + kind: "spt-match"; enabled: boolean; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IPlayerScavConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IPlayerScavConfig.d.ts index 7f587e0..8834768 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IPlayerScavConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IPlayerScavConfig.d.ts @@ -1,7 +1,7 @@ -import { GenerationData } from "@spt-aki/models/eft/common/tables/IBotType"; -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPlayerScavConfig extends IBaseConfig { - kind: "aki-playerscav"; + kind: "spt-playerscav"; karmaLevel: Record; } export interface KarmaLevel { @@ -9,7 +9,7 @@ export interface KarmaLevel { modifiers: Modifiers; itemLimits: ItemLimits; equipmentBlacklist: Record; - labsAccessCardChancePercent: number; + lootItemsToAddChancePercent: Record; } export interface Modifiers { equipment: Record; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IPmChatResponse.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IPmChatResponse.d.ts index 50afdbc..83fab34 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IPmChatResponse.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IPmChatResponse.d.ts @@ -1,6 +1,6 @@ -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPmcChatResponse extends IBaseConfig { - kind: "aki-pmcchatresponse"; + kind: "spt-pmcchatresponse"; victim: IResponseSettings; killer: IResponseSettings; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IPmcConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IPmcConfig.d.ts index d67e6c2..00fabb3 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IPmcConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IPmcConfig.d.ts @@ -1,8 +1,8 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; -import { MemberCategory } from "@spt-aki/models/enums/MemberCategory"; -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { MinMax } from "@spt/models/common/MinMax"; +import { MemberCategory } from "@spt/models/enums/MemberCategory"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPmcConfig extends IBaseConfig { - kind: "aki-pmc"; + kind: "spt-pmc"; /** What game version should the PMC have */ gameVersionWeight: Record; /** What account type should the PMC have */ @@ -13,7 +13,6 @@ export interface IPmcConfig extends IBaseConfig { pocketLoot: SlotLootSettings; /** Global whitelist/blacklist of backpack loot for PMCs */ backpackLoot: SlotLootSettings; - dynamicLoot: DynamicLoot; /** Use difficulty defined in config/bot.json/difficulty instead of chosen difficulty dropdown value */ useDifficultyOverride: boolean; /** Difficulty override e.g. "AsOnline/Hard" */ @@ -42,10 +41,14 @@ export interface IPmcConfig extends IBaseConfig { enemyTypes: string[]; /** How many levels above player level can a PMC be */ botRelativeLevelDeltaMax: number; + /** How many levels below player level can a PMC be */ + botRelativeLevelDeltaMin: number; /** Force a number of healing items into PMCs secure container to ensure they can heal */ forceHealingItemsIntoSecure: boolean; - addPrefixToSameNamePMCAsPlayerChance: number; allPMCsHavePlayerNameWithRandomPrefixChance: number; + locationSpecificPmcLevelOverride: Record; + /** Should secure container loot from usec.json/bear.json be added to pmc bots secure */ + addSecureContainerLootFromBotConfig: boolean; } export interface PmcTypes { usec: string; @@ -54,8 +57,4 @@ export interface PmcTypes { export interface SlotLootSettings { whitelist: string[]; blacklist: string[]; - moneyStackLimits: Record; -} -export interface DynamicLoot { - moneyStackLimits: Record; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IQuestConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IQuestConfig.d.ts index c190d01..a4257cf 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IQuestConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IQuestConfig.d.ts @@ -1,10 +1,10 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; -import { ELocationName } from "@spt-aki/models/enums/ELocationName"; -import { SeasonalEventType } from "@spt-aki/models/enums/SeasonalEventType"; -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { MinMax } from "@spt/models/common/MinMax"; +import { ELocationName } from "@spt/models/enums/ELocationName"; +import { SeasonalEventType } from "@spt/models/enums/SeasonalEventType"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IQuestConfig extends IBaseConfig { - kind: "aki-quest"; - redeemTime: number; + kind: "spt-quest"; + mailRedeemTimeHours: Record; questTemplateIds: IPlayerTypeQuestIds; /** Show non-seasonal quests be shown to player */ showNonSeasonalEventQuests: boolean; @@ -47,11 +47,14 @@ export interface IRepeatableQuestConfig { /** Item tplIds to ignore when generating rewards */ rewardBlacklist: string[]; rewardAmmoStackMinSize: number; + freeChangesAvailable: number; + freeChanges: number; } export interface IRewardScaling { levels: number[]; experience: number[]; roubles: number[]; + gpCoins: number[]; items: number[]; reputation: number[]; rewardSpread: number; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IRagfairConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IRagfairConfig.d.ts index 14d77f1..bb318de 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IRagfairConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IRagfairConfig.d.ts @@ -1,12 +1,14 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { MinMax } from "@spt/models/common/MinMax"; +import { IBaseConfig, IRunIntervalValues } from "@spt/models/spt/config/IBaseConfig"; export interface IRagfairConfig extends IBaseConfig { - kind: "aki-ragfair"; + kind: "spt-ragfair"; /** How many seconds should pass before expired offers and procesed + player offers checked if sold */ runIntervalSeconds: number; + /** Default values used to hydrate `runIntervalSeconds` with */ + runIntervalValues: IRunIntervalValues; /** Player listing settings */ sell: Sell; - /** Trader ids + should their assorts be listed on flea*/ + /** Trader ids + should their assorts be listed on flea */ traders: Record; dynamic: Dynamic; } @@ -16,10 +18,8 @@ export interface Sell { /** Settings to control chances of offer being sold */ chance: Chance; /** Settings to control how long it takes for a player offer to sell */ - time: Time; - /** Player offer reputation gain/loss settings */ - reputation: Reputation; - /**Seconds from clicking remove to remove offer from market */ + time: MinMax; + /** Seconds from clicking remove to remove offer from market */ expireSeconds: number; } export interface Chance { @@ -32,13 +32,6 @@ export interface Chance { /** Min possible sell chance % for a player listed offer */ minSellChancePercent: number; } -export interface Time extends MinMax { - base: number; -} -export interface Reputation { - gain: number; - loss: number; -} export interface Dynamic { purchasesAreFoundInRaid: boolean; /** Use the highest trader price for an offer if its greater than the price in templates/prices.json */ @@ -65,6 +58,10 @@ export interface Dynamic { nonStackableCount: MinMax; /** Range of rating offers for items being listed */ rating: MinMax; + /** Armor specific flea settings */ + armor: IArmorSettings; + /** A multipler to apply to individual tpls price just prior to item quality adjustment */ + itemPriceMultiplier: Record; /** Percentages to sell offers in each currency */ currencies: Record; /** Item tpls that should be forced to sell as a single item */ @@ -82,8 +79,6 @@ export interface IPriceRanges { pack: MinMax; } export interface IBarterDetails { - /** Should barter offers be generated */ - enable: boolean; /** Percentage change an offer is listed as a barter */ chancePercent: number; /** Min number of required items for a barter requirement */ @@ -98,8 +93,6 @@ export interface IBarterDetails { itemTypeBlacklist: string[]; } export interface IPackDetails { - /** Should pack offers be generated */ - enable: boolean; /** Percentage change an offer is listed as a pack */ chancePercent: number; /** Min number of required items for a pack */ @@ -119,9 +112,11 @@ export interface OfferAdjustment { /** What is the minimum rouble price to consider adjusting price of item */ priceThreshholdRub: number; } -export interface Condition extends MinMax { +export interface Condition { /** Percentage change durability is altered */ conditionChance: number; + current: MinMax; + max: MinMax; } export interface Blacklist { /** Damaged ammo packs */ @@ -134,9 +129,30 @@ export interface Blacklist { enableQuestList: boolean; /** Should trader items that are blacklisted by bsg be listed on flea */ traderItems: boolean; + /** Maximum level an armor plate can be found in a flea-listed armor item */ + armorPlate: IArmorPlateBlacklistSettings; + /** Should specific categories be blacklisted from the flea, true = use blacklist */ + enableCustomItemCategoryList: boolean; + /** Custom category blacklist for parent Ids */ + customItemCategoryList: string[]; +} +export interface IArmorPlateBlacklistSettings { + /** Max level of plates an armor can have without being removed */ + maxProtectionLevel: number; + /** Item slots to NOT remove from items on flea */ + ignoreSlots: string[]; } export interface IUnreasonableModPrices { + /** Enable a system that adjusts very high ragfair prices to be below a max multiple of items the handbook values */ enabled: boolean; + /** Multipler to start adjusting item values from, e.g. a value of 10 means any value over 10x the handbook price gets adjusted */ handbookPriceOverMultiplier: number; + /** The new multiplier for items found using above property, e.g. a value of 4 means set items price to 4x handbook price */ newPriceHandbookMultiplier: number; } +export interface IArmorSettings { + /** % chance / 100 that armor plates will be removed from an offer before listing */ + removeRemovablePlateChance: number; + /** What slots are to be removed when removeRemovablePlateChance is true */ + plateSlotIdToRemovePool: string[]; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IRepairConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IRepairConfig.d.ts index 9e23cc4..12a87fa 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IRepairConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IRepairConfig.d.ts @@ -1,7 +1,7 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { MinMax } from "@spt/models/common/MinMax"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IRepairConfig extends IBaseConfig { - kind: "aki-repair"; + kind: "spt-repair"; priceMultiplier: number; applyRandomizeDurabilityLoss: boolean; weaponSkillRepairGain: number; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IScavCaseConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IScavCaseConfig.d.ts index 92f2722..f2ff2f2 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IScavCaseConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IScavCaseConfig.d.ts @@ -1,7 +1,7 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { MinMax } from "@spt/models/common/MinMax"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IScavCaseConfig extends IBaseConfig { - kind: "aki-scavcase"; + kind: "spt-scavcase"; rewardItemValueRangeRub: Record; moneyRewards: MoneyRewards; ammoRewards: AmmoRewards; @@ -16,6 +16,7 @@ export interface MoneyRewards { rubCount: MoneyLevels; usdCount: MoneyLevels; eurCount: MoneyLevels; + gpCount: MoneyLevels; } export interface MoneyLevels { common: MinMax; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ISeasonalEventConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ISeasonalEventConfig.d.ts index 4ac903b..da7070b 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ISeasonalEventConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ISeasonalEventConfig.d.ts @@ -1,11 +1,14 @@ -import { SeasonalEventType } from "@spt-aki/models/enums/SeasonalEventType"; -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { BossLocationSpawn } from "@spt/models/eft/common/ILocationBase"; +import { SeasonalEventType } from "@spt/models/enums/SeasonalEventType"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ISeasonalEventConfig extends IBaseConfig { - kind: "aki-seasonalevents"; + kind: "spt-seasonalevents"; enableSeasonalEventDetection: boolean; /** event / botType / equipSlot / itemid */ eventGear: Record>>>; events: ISeasonalEvent[]; + eventBotMapping: Record; + eventBossSpawns: Record>; gifterSettings: GifterSetting[]; } export interface ISeasonalEvent { diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ITraderConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ITraderConfig.d.ts index 29b3d2d..d60b496 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ITraderConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ITraderConfig.d.ts @@ -1,33 +1,39 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; -import { LootRequest } from "@spt-aki/models/spt/services/LootRequest"; +import { MinMax } from "@spt/models/common/MinMax"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; +import { LootRequest } from "@spt/models/spt/services/LootRequest"; export interface ITraderConfig extends IBaseConfig { - kind: "aki-trader"; + kind: "spt-trader"; updateTime: UpdateTime[]; purchasesAreFoundInRaid: boolean; + /** Should trader reset times be set based on server start time (false = bsg time - on the hour) */ + tradersResetFromServerStart: boolean; updateTimeDefault: number; traderPriceMultipler: number; - /** Keep track of purchased trader-limited items beyond server restarts to prevent server-restart item scumming */ - persistPurchaseDataInProfile: boolean; fence: FenceConfig; } export interface UpdateTime { traderId: string; - seconds: number; + /** Seconds between trader resets */ + seconds: MinMax; } export interface FenceConfig { discountOptions: DiscountOptions; partialRefreshTimeSeconds: number; partialRefreshChangePercent: number; assortSize: number; - maxPresetsPercent: number; + weaponPresetMinMax: MinMax; + equipmentPresetMinMax: MinMax; itemPriceMult: number; presetPriceMult: number; - armorMaxDurabilityPercentMinMax: MinMax; - presetMaxDurabilityPercentMinMax: MinMax; + armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax; + weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax; + /** Keyed to plate protection level */ + chancePlateExistsInArmorPercent: Record; /** Key: item tpl */ itemStackSizeOverrideMinMax: Record; itemTypeLimits: Record; + /** Prevent duplicate offers of items of specific categories by parentId */ + preventDuplicateOffersOfCategory: string[]; regenerateAssortsOnRefresh: boolean; /** Max rouble price before item is not listed on flea */ itemCategoryRoublePriceLimit: Record; @@ -35,8 +41,15 @@ export interface FenceConfig { presetSlotsToRemoveChancePercent: Record; /** Block seasonal items from appearing when season is inactive */ blacklistSeasonalItems: boolean; + /** Max pen value allowed to be listed on flea - affects ammo + ammo boxes */ + ammoMaxPenLimit: number; blacklist: string[]; coopExtractGift: CoopExtractReward; + btrDeliveryExpireHours: number; +} +export interface IItemDurabilityCurrentMax { + current: MinMax; + max: MinMax; } export interface CoopExtractReward extends LootRequest { sendGift: boolean; @@ -47,4 +60,6 @@ export interface DiscountOptions { assortSize: number; itemPriceMult: number; presetPriceMult: number; + weaponPresetMinMax: MinMax; + equipmentPresetMinMax: MinMax; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IWeatherConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IWeatherConfig.d.ts index 10f5459..970ade5 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IWeatherConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IWeatherConfig.d.ts @@ -1,10 +1,21 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; -import { WindDirection } from "@spt-aki/models/enums/WindDirection"; -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { MinMax } from "@spt/models/common/MinMax"; +import { Season } from "@spt/models/enums/Season"; +import { WindDirection } from "@spt/models/enums/WindDirection"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IWeatherConfig extends IBaseConfig { - kind: "aki-weather"; + kind: "spt-weather"; acceleration: number; weather: Weather; + seasonDates: ISeasonDateTimes[]; + overrideSeason?: Season; +} +export interface ISeasonDateTimes { + seasonType: Season; + name: string; + startDay: number; + startMonth: number; + endDay: number; + endMonth: number; } export interface Weather { clouds: WeatherSettings; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/controllers/IBotController.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/controllers/IBotController.d.ts index 3e8e035..e577497 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/controllers/IBotController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/controllers/IBotController.d.ts @@ -1,7 +1,7 @@ -import { IGenerateBotsRequestData } from "@spt-aki/models/eft/bot/IGenerateBotsRequestData"; -import { IBotBase } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { IBotCore } from "@spt-aki/models/eft/common/tables/IBotCore"; -import { Difficulty } from "@spt-aki/models/eft/common/tables/IBotType"; +import { IGenerateBotsRequestData } from "@spt/models/eft/bot/IGenerateBotsRequestData"; +import { IBotBase } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotCore } from "@spt/models/eft/common/tables/IBotCore"; +import { Difficulty } from "@spt/models/eft/common/tables/IBotType"; export interface IBotController { getBotLimit(type: string): number; getBotDifficulty(type: string, difficulty: string): IBotCore | Difficulty; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/dialog/ISendMessageDetails.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/dialog/ISendMessageDetails.d.ts index 2068ede..1625f47 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/dialog/ISendMessageDetails.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/dialog/ISendMessageDetails.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ISystemData, IUserDialogInfo, MessageContentRagfair } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { MessageType } from "@spt-aki/models/enums/MessageType"; -import { Traders } from "@spt-aki/models/enums/Traders"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ISystemData, IUserDialogInfo, MessageContentRagfair } from "@spt/models/eft/profile/ISptProfile"; +import { MessageType } from "@spt/models/enums/MessageType"; +import { Traders } from "@spt/models/enums/Traders"; export interface ISendMessageDetails { /** Player id */ recipientId: string; @@ -30,7 +30,17 @@ export interface ISendMessageDetails { } export interface IProfileChangeEvent { _id: string; - Type: "TraderSalesSum" | "TraderStanding" | "ProfileLevel" | "SkillPoints" | "ExamineAllItems" | "UnlockTrader"; + Type: ProfileChangeEventType; value: number; entity?: string; } +export declare enum ProfileChangeEventType { + TRADER_SALES_SUM = "TraderSalesSum", + TRADER_STANDING = "TraderStanding", + PROFILE_LEVEL = "ProfileLevel", + SKILL_POINTS = "SkillPoints", + EXAMINE_ALL_ITEMS = "ExamineAllItems", + UNLOCK_TRADER = "UnlockTrader", + ASSORT_UNLOCK_RULE = "AssortmentUnlockRule", + HIDEOUT_AREA_LEVEL = "HideoutAreaLevel" +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/fence/ICreateFenceAssortsResult.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/fence/ICreateFenceAssortsResult.d.ts new file mode 100644 index 0000000..553f4e2 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/fence/ICreateFenceAssortsResult.d.ts @@ -0,0 +1,7 @@ +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; +export interface ICreateFenceAssortsResult { + sptItems: Item[][]; + barter_scheme: Record; + loyal_level_items: Record; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/fence/IFenceAssortGenerationValues.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/fence/IFenceAssortGenerationValues.d.ts new file mode 100644 index 0000000..dea4726 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/fence/IFenceAssortGenerationValues.d.ts @@ -0,0 +1,9 @@ +export interface IFenceAssortGenerationValues { + normal: IGenerationAssortValues; + discount: IGenerationAssortValues; +} +export interface IGenerationAssortValues { + item: number; + weaponPreset: number; + equipmentPreset: number; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/generators/IBotGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/generators/IBotGenerator.d.ts index 8c0b979..e46ce24 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/generators/IBotGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/generators/IBotGenerator.d.ts @@ -1,10 +1,5 @@ -import { Inventory as PmcInventory } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { Chances, Generation, Inventory } from "@spt-aki/models/eft/common/tables/IBotType"; +import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { Chances, Generation, Inventory } from "@spt/models/eft/common/tables/IBotType"; export interface IBotGenerator { generateInventory(templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory; } -export interface IExhaustableArray { - getRandomValue(): T; - getFirstValue(): T; - hasValues(): boolean; -} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/generators/ILocationGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/generators/ILocationGenerator.d.ts index 347d5fa..2df98e7 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/generators/ILocationGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/generators/ILocationGenerator.d.ts @@ -1,5 +1,5 @@ -import { ILooseLoot, SpawnpointTemplate } from "@spt-aki/models/eft/common/ILooseLoot"; -import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "@spt-aki/models/eft/common/tables/ILootBase"; +import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "@spt/models/eft/common/ILocation"; +import { ILooseLoot, SpawnpointTemplate } from "@spt/models/eft/common/ILooseLoot"; export interface ILocationGenerator { generateContainerLoot(containerIn: IStaticContainerProps, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerProps; generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): SpawnpointTemplate[]; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/generators/IRagfairAssortGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/generators/IRagfairAssortGenerator.d.ts index bcd26c2..193b685 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/generators/IRagfairAssortGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/generators/IRagfairAssortGenerator.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; +import { Item } from "@spt/models/eft/common/tables/IItem"; export interface IRagfairAssortGenerator { getAssortItems(): Item[]; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/generators/IRagfairOfferGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/generators/IRagfairOfferGenerator.d.ts index bb5fdf9..66d28e9 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/generators/IRagfairOfferGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/generators/IRagfairOfferGenerator.d.ts @@ -1,6 +1,6 @@ -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { IBarterScheme } from "@spt-aki/models/eft/common/tables/ITrader"; -import { IRagfairOffer } from "@spt-aki/models/eft/ragfair/IRagfairOffer"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; +import { IRagfairOffer } from "@spt/models/eft/ragfair/IRagfairOffer"; export interface IRagfairOfferGenerator { createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece: boolean): IRagfairOffer; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/hideout/IHideout.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/hideout/IHideout.d.ts new file mode 100644 index 0000000..57fed47 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/hideout/IHideout.d.ts @@ -0,0 +1,12 @@ +import { IHideoutArea } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutScavCase } from "@spt/models/eft/hideout/IHideoutScavCase"; +import { IHideoutSettingsBase } from "@spt/models/eft/hideout/IHideoutSettingsBase"; +import { IQteData } from "@spt/models/eft/hideout/IQteData"; +export interface IHideout { + areas: IHideoutArea[]; + production: IHideoutProduction[]; + scavcase: IHideoutScavCase[]; + settings: IHideoutSettingsBase; + qte: IQteData[]; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/inventory/IOwnerInventoryItems.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/inventory/IOwnerInventoryItems.d.ts new file mode 100644 index 0000000..dd4efab --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/inventory/IOwnerInventoryItems.d.ts @@ -0,0 +1,9 @@ +import { Item } from "@spt/models/eft/common/tables/IItem"; +export interface IOwnerInventoryItems { + /** Inventory items from source */ + from: Item[]; + /** Inventory items at destination */ + to: Item[]; + sameInventory: boolean; + isMail: boolean; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/logging/IClientLogRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/logging/IClientLogRequest.d.ts index b7e1b36..71f0b38 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/logging/IClientLogRequest.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/logging/IClientLogRequest.d.ts @@ -1,4 +1,4 @@ -import { LogLevel } from "@spt-aki/models/spt/logging/LogLevel"; +import { LogLevel } from "@spt/models/spt/logging/LogLevel"; export interface IClientLogRequest { Source: string; Level: LogLevel | string; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/logging/LogTextColor.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/logging/LogTextColor.d.ts index 6c7abf3..aefca2a 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/logging/LogTextColor.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/logging/LogTextColor.d.ts @@ -7,5 +7,5 @@ export declare enum LogTextColor { MAGENTA = "magenta", CYAN = "cyan", WHITE = "white", - GRAY = "" + GRAY = "gray" } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/mod/IPackageJsonData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/mod/IPackageJsonData.d.ts index b07d00e..d21e5f1 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/mod/IPackageJsonData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/mod/IPackageJsonData.d.ts @@ -5,9 +5,10 @@ export interface IPackageJsonData { dependencies?: Record; modDependencies?: Record; name: string; + url: string; author: string; version: string; - akiVersion: string; + sptVersion: string; /** We deliberately purge this data */ scripts: Record; devDependencies: Record; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/mod/NewItemDetails.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/mod/NewItemDetails.d.ts index 304462d..65996c1 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/mod/NewItemDetails.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/mod/NewItemDetails.d.ts @@ -1,4 +1,4 @@ -import { ITemplateItem, Props } from "@spt-aki/models/eft/common/tables/ITemplateItem"; +import { ITemplateItem, Props } from "@spt/models/eft/common/tables/ITemplateItem"; export declare abstract class NewItemDetailsBase { /** Price of the item on flea market */ fleaPriceRoubles: number; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/quests/IGetRepeatableByIdResult.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/quests/IGetRepeatableByIdResult.d.ts new file mode 100644 index 0000000..cd57ec5 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/quests/IGetRepeatableByIdResult.d.ts @@ -0,0 +1,5 @@ +import { IPmcDataRepeatableQuest, IRepeatableQuest } from "@spt/models/eft/common/tables/IRepeatableQuests"; +export interface IGetRepeatableByIdResult { + quest: IRepeatableQuest; + repeatableType: IPmcDataRepeatableQuest; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/repeatable/IQuestRewardValues.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/repeatable/IQuestRewardValues.d.ts new file mode 100644 index 0000000..bcee532 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/repeatable/IQuestRewardValues.d.ts @@ -0,0 +1,9 @@ +export interface IQuestRewardValues { + skillPointReward: number; + skillRewardChance: number; + rewardReputation: number; + rewardNumItems: number; + rewardRoubles: number; + gpCoinRewardCount: number; + rewardXP: number; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/repeatable/IQuestTypePool.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/repeatable/IQuestTypePool.d.ts index bce68e8..200303b 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/repeatable/IQuestTypePool.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/repeatable/IQuestTypePool.d.ts @@ -1,4 +1,4 @@ -import { ELocationName } from "@spt-aki/models/enums/ELocationName"; +import { ELocationName } from "@spt/models/enums/ELocationName"; export interface IQuestTypePool { types: string[]; pool: IQuestPool; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/server/ExhaustableArray.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/server/ExhaustableArray.d.ts new file mode 100644 index 0000000..c27f41f --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/server/ExhaustableArray.d.ts @@ -0,0 +1,17 @@ +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +export declare class ExhaustableArray implements IExhaustableArray { + private itemPool; + private randomUtil; + private cloner; + private pool; + constructor(itemPool: T[], randomUtil: RandomUtil, cloner: ICloner); + getRandomValue(): T | undefined; + getFirstValue(): T | undefined; + hasValues(): boolean; +} +export interface IExhaustableArray { + getRandomValue(): T | undefined; + getFirstValue(): T | undefined; + hasValues(): boolean; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/server/IDatabaseTables.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/server/IDatabaseTables.d.ts index 98a0dbd..8e4bc6a 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/server/IDatabaseTables.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/server/IDatabaseTables.d.ts @@ -1,57 +1,20 @@ -import { IGlobals } from "@spt-aki/models/eft/common/IGlobals"; -import { IBotBase } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { IBotCore } from "@spt-aki/models/eft/common/tables/IBotCore"; -import { IBotType } from "@spt-aki/models/eft/common/tables/IBotType"; -import { ICustomizationItem } from "@spt-aki/models/eft/common/tables/ICustomizationItem"; -import { IHandbookBase } from "@spt-aki/models/eft/common/tables/IHandbookBase"; -import { ILootBase } from "@spt-aki/models/eft/common/tables/ILootBase"; -import { IMatch } from "@spt-aki/models/eft/common/tables/IMatch"; -import { IProfileTemplates } from "@spt-aki/models/eft/common/tables/IProfileTemplate"; -import { IQuest } from "@spt-aki/models/eft/common/tables/IQuest"; -import { IRepeatableQuestDatabase } from "@spt-aki/models/eft/common/tables/IRepeatableQuests"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { ITrader } from "@spt-aki/models/eft/common/tables/ITrader"; -import { IHideoutArea } from "@spt-aki/models/eft/hideout/IHideoutArea"; -import { IHideoutProduction } from "@spt-aki/models/eft/hideout/IHideoutProduction"; -import { IHideoutScavCase } from "@spt-aki/models/eft/hideout/IHideoutScavCase"; -import { IHideoutSettingsBase } from "@spt-aki/models/eft/hideout/IHideoutSettingsBase"; -import { IQteData } from "@spt-aki/models/eft/hideout/IQteData"; -import { IEquipmentBuild } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { ILocaleBase } from "@spt-aki/models/spt/server/ILocaleBase"; -import { ILocations } from "@spt-aki/models/spt/server/ILocations"; -import { IServerBase } from "@spt-aki/models/spt/server/IServerBase"; -import { ISettingsBase } from "@spt-aki/models/spt/server/ISettingsBase"; +import { IGlobals } from "@spt/models/eft/common/IGlobals"; +import { IMatch } from "@spt/models/eft/common/tables/IMatch"; +import { ITrader } from "@spt/models/eft/common/tables/ITrader"; +import { IBots } from "@spt/models/spt/bots/IBots"; +import { IHideout } from "@spt/models/spt/hideout/IHideout"; +import { ILocaleBase } from "@spt/models/spt/server/ILocaleBase"; +import { ILocations } from "@spt/models/spt/server/ILocations"; +import { IServerBase } from "@spt/models/spt/server/IServerBase"; +import { ISettingsBase } from "@spt/models/spt/server/ISettingsBase"; +import { ITemplates } from "@spt/models/spt/templates/ITemplates"; export interface IDatabaseTables { - bots?: { - types: Record; - base: IBotBase; - core: IBotCore; - }; - hideout?: { - areas: IHideoutArea[]; - production: IHideoutProduction[]; - scavcase: IHideoutScavCase[]; - settings: IHideoutSettingsBase; - qte: IQteData[]; - }; + bots?: IBots; + hideout?: IHideout; locales?: ILocaleBase; locations?: ILocations; - loot?: ILootBase; match?: IMatch; - templates?: { - character: string[]; - items: Record; - quests: Record; - repeatableQuests: IRepeatableQuestDatabase; - handbook: IHandbookBase; - customization: Record; - /** The profile templates listed in the launcher on profile creation, split by account type (e.g. Standard) then side (e.g. bear/usec) */ - profiles: IProfileTemplates; - /** Flea prices of items - gathered from online flea market dump */ - prices: Record; - /** Default equipment loadouts that show on main inventory screen */ - defaultEquipmentPresets: IEquipmentBuild[]; - }; + templates?: ITemplates; traders?: Record; globals?: IGlobals; server?: IServerBase; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/server/ILocations.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/server/ILocations.d.ts index 9987d8c..500efcc 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/server/ILocations.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/server/ILocations.d.ts @@ -1,26 +1,24 @@ -import { ILocationBase } from "@spt-aki/models/eft/common/ILocationBase"; -import { ILooseLoot } from "@spt-aki/models/eft/common/ILooseLoot"; -import { ILocationsBase } from "@spt-aki/models/eft/common/tables/ILocationsBase"; +import { ILocation } from "@spt/models/eft/common/ILocation"; +import { ILocationsBase } from "@spt/models/eft/common/tables/ILocationsBase"; export interface ILocations { - bigmap?: ILocationData; - develop?: ILocationData; - factory4_day?: ILocationData; - factory4_night?: ILocationData; - hideout?: ILocationData; - interchange?: ILocationData; - laboratory?: ILocationData; - lighthouse?: ILocationData; - privatearea?: ILocationData; - rezervbase?: ILocationData; - shoreline?: ILocationData; - suburbs?: ILocationData; - tarkovstreets?: ILocationData; - terminal?: ILocationData; - town?: ILocationData; - woods?: ILocationData; + bigmap?: ILocation; + develop?: ILocation; + factory4_day?: ILocation; + factory4_night?: ILocation; + hideout?: ILocation; + interchange?: ILocation; + laboratory?: ILocation; + lighthouse?: ILocation; + privatearea?: ILocation; + rezervbase?: ILocation; + shoreline?: ILocation; + suburbs?: ILocation; + tarkovstreets?: ILocation; + terminal?: ILocation; + town?: ILocation; + woods?: ILocation; + sandbox?: ILocation; + sandbox_high?: ILocation; + /** Holds a mapping of the linkages between locations on the UI */ base?: ILocationsBase; } -export interface ILocationData { - base: ILocationBase; - looseLoot?: ILooseLoot; -} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/server/ISettingsBase.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/server/ISettingsBase.d.ts index 6be2ad4..2bca633 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/server/ISettingsBase.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/server/ISettingsBase.d.ts @@ -28,6 +28,7 @@ export interface Config { WeaponOverlapDistanceCulling: number; WebDiagnosticsEnabled: boolean; NetworkStateView: INetworkStateView; + WsReconnectionDelays: string[]; } export interface FramerateLimit { MaxFramerateGameLimit: number; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/services/CustomPreset.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/services/CustomPreset.d.ts index 989c58f..3301a55 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/services/CustomPreset.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/services/CustomPreset.d.ts @@ -1,4 +1,4 @@ -import { IPreset } from "@spt-aki/models/eft/common/IGlobals"; +import { IPreset } from "@spt/models/eft/common/IGlobals"; export interface CustomPreset { key: string; preset: IPreset; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/services/CustomTraderAssortData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/services/CustomTraderAssortData.d.ts index 289d66a..7ad6341 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/services/CustomTraderAssortData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/services/CustomTraderAssortData.d.ts @@ -1,5 +1,5 @@ -import { ITraderAssort } from "@spt-aki/models/eft/common/tables/ITrader"; -import { Traders } from "@spt-aki/models/enums/Traders"; +import { ITraderAssort } from "@spt/models/eft/common/tables/ITrader"; +import { Traders } from "@spt/models/enums/Traders"; export interface CustomTraderAssortData { traderId: Traders; assorts: ITraderAssort; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/services/IInsuranceEquipmentPkg.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/services/IInsuranceEquipmentPkg.d.ts new file mode 100644 index 0000000..92d0565 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/services/IInsuranceEquipmentPkg.d.ts @@ -0,0 +1,8 @@ +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +export interface IInsuranceEquipmentPkg { + sessionID: string; + pmcData: IPmcData; + itemToReturnToPlayer: Item; + traderId: string; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/services/ITraderServiceModel.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/services/ITraderServiceModel.d.ts new file mode 100644 index 0000000..165b65c --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/services/ITraderServiceModel.d.ts @@ -0,0 +1,18 @@ +import { TraderServiceType } from "@spt/models/enums/TraderServiceType"; +export interface ITraderServiceModel { + serviceType: TraderServiceType; + itemsToPay?: { + [key: string]: number; + }; + itemsToReceive?: string[]; + subServices?: { + [key: string]: number; + }; + requirements?: ITraderServiceRequirementsModel; +} +export interface ITraderServiceRequirementsModel { + completedQuests?: string[]; + standings?: { + [key: string]: number; + }; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/services/LootRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/services/LootRequest.d.ts index f277553..c52a876 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/services/LootRequest.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/services/LootRequest.d.ts @@ -1,6 +1,7 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; +import { MinMax } from "@spt/models/common/MinMax"; export interface LootRequest { - presetCount: MinMax; + weaponPresetCount: MinMax; + armorPresetCount: MinMax; itemCount: MinMax; weaponCrateCount: MinMax; itemBlacklist: string[]; @@ -10,4 +11,5 @@ export interface LootRequest { itemStackLimits: Record; armorLevelWhitelist: number[]; allowBossItems: boolean; + useRewarditemBlacklist?: boolean; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/templates/ITemplates.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/templates/ITemplates.d.ts new file mode 100644 index 0000000..c2ebbf9 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/templates/ITemplates.d.ts @@ -0,0 +1,24 @@ +import { IAchievement } from "@spt/models/eft/common/tables/IAchievement"; +import { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomizationItem"; +import { IHandbookBase } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IProfileTemplates } from "@spt/models/eft/common/tables/IProfileTemplate"; +import { IQuest } from "@spt/models/eft/common/tables/IQuest"; +import { IRepeatableQuestDatabase } from "@spt/models/eft/common/tables/IRepeatableQuests"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { IDefaultEquipmentPreset } from "@spt/models/eft/profile/ISptProfile"; +export interface ITemplates { + character: string[]; + items: Record; + quests: Record; + repeatableQuests: IRepeatableQuestDatabase; + handbook: IHandbookBase; + customization: Record; + /** The profile templates listed in the launcher on profile creation, split by account type (e.g. Standard) then side (e.g. bear/usec) */ + profiles: IProfileTemplates; + /** Flea prices of items - gathered from online flea market dump */ + prices: Record; + /** Default equipment loadouts that show on main inventory screen */ + defaultEquipmentPresets: IDefaultEquipmentPreset[]; + /** Achievements */ + achievements: IAchievement[]; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/utils/IAsyncQueue.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/utils/IAsyncQueue.d.ts index 464139a..4bc9199 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/utils/IAsyncQueue.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/utils/IAsyncQueue.d.ts @@ -1,4 +1,4 @@ -import { ICommand } from "@spt-aki/models/spt/utils/ICommand"; +import { ICommand } from "@spt/models/spt/utils/ICommand"; export interface IAsyncQueue { waitFor(command: ICommand): Promise; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/utils/ILogger.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/utils/ILogger.d.ts index 340f26b..1b9726d 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/utils/ILogger.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/utils/ILogger.d.ts @@ -1,6 +1,6 @@ -import { Daum } from "@spt-aki/models/eft/itemEvent/IItemEventRouterRequest"; -import { LogBackgroundColor } from "@spt-aki/models/spt/logging/LogBackgroundColor"; -import { LogTextColor } from "@spt-aki/models/spt/logging/LogTextColor"; +import { Daum } from "@spt/models/eft/itemEvent/IItemEventRouterRequest"; +import { LogBackgroundColor } from "@spt/models/spt/logging/LogBackgroundColor"; +import { LogTextColor } from "@spt/models/spt/logging/LogTextColor"; export interface ILogger { writeToLogFile(data: string | Daum): void; log(data: string | Record | Error, color: string, backgroundColor?: string): void; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/utils/IUuidGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/utils/IUuidGenerator.d.ts deleted file mode 100644 index 3870469..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/utils/IUuidGenerator.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface IUUidGenerator { - generate(): string; -} diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/EventOutputHolder.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/EventOutputHolder.d.ts index 8ee10ef..ef20706 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/EventOutputHolder.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/EventOutputHolder.d.ts @@ -1,20 +1,23 @@ -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IHideoutImprovement, Productive, TraderInfo } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { TraderData } from "@spt-aki/models/eft/itemEvent/IItemEventRouterBase"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IHideoutImprovement, Productive, TraderInfo } from "@spt/models/eft/common/tables/IBotBase"; +import { TraderData } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class EventOutputHolder { - protected jsonUtil: JsonUtil; protected profileHelper: ProfileHelper; protected timeUtil: TimeUtil; - /** What has client been informed of this game session */ - protected clientActiveSessionStorage: Record; - constructor(jsonUtil: JsonUtil, profileHelper: ProfileHelper, timeUtil: TimeUtil); - protected output: IItemEventRouterResponse; + }>>; + protected outputStore: Record; + constructor(profileHelper: ProfileHelper, timeUtil: TimeUtil, cloner: ICloner); getOutput(sessionID: string): IItemEventRouterResponse; /** * Reset the response object to a default state @@ -44,7 +47,7 @@ export declare class EventOutputHolder { * @param pmcData Player profile * @returns dictionary of hideout productions */ - protected getProductionsFromProfileAndFlagComplete(productions: Record): Record; + protected getProductionsFromProfileAndFlagComplete(productions: Record, sessionId: string): Record | undefined; /** * Required as continuous productions don't reset and stay at 100% completion but client thinks it hasn't started * @param productions Productions in a profile diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/HttpRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/HttpRouter.d.ts index 875182d..3fdb53f 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/HttpRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/HttpRouter.d.ts @@ -1,13 +1,13 @@ /// import { IncomingMessage } from "node:http"; -import { DynamicRouter, Router, StaticRouter } from "@spt-aki/di/Router"; +import { DynamicRouter, Router, StaticRouter } from "@spt/di/Router"; export declare class HttpRouter { protected staticRouters: StaticRouter[]; protected dynamicRoutes: DynamicRouter[]; constructor(staticRouters: StaticRouter[], dynamicRoutes: DynamicRouter[]); protected groupBy(list: T[], keyGetter: (t: T) => string): Map; - getResponse(req: IncomingMessage, info: any, sessionID: string): string; - protected handleRoute(url: string, info: any, sessionID: string, wrapper: ResponseWrapper, routers: Router[], dynamic: boolean): boolean; + getResponse(req: IncomingMessage, info: any, sessionID: string): Promise; + protected handleRoute(url: string, info: any, sessionID: string, wrapper: ResponseWrapper, routers: Router[], dynamic: boolean): Promise; } declare class ResponseWrapper { output: string; diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/ImageRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/ImageRouter.d.ts index 9d13b7a..eb3697f 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/ImageRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/ImageRouter.d.ts @@ -1,8 +1,8 @@ /// import { IncomingMessage, ServerResponse } from "node:http"; -import { ImageRouteService } from "@spt-aki/services/mod/image/ImageRouteService"; -import { HttpFileUtil } from "@spt-aki/utils/HttpFileUtil"; -import { VFS } from "@spt-aki/utils/VFS"; +import { ImageRouteService } from "@spt/services/mod/image/ImageRouteService"; +import { HttpFileUtil } from "@spt/utils/HttpFileUtil"; +import { VFS } from "@spt/utils/VFS"; export declare class ImageRouter { protected vfs: VFS; protected imageRouteService: ImageRouteService; diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/ItemEventRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/ItemEventRouter.d.ts index 6c770ec..f8043c0 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/ItemEventRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/ItemEventRouter.d.ts @@ -1,21 +1,23 @@ -import { ItemEventRouterDefinition } from "@spt-aki/di/Router"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { IItemEventRouterRequest } from "@spt-aki/models/eft/itemEvent/IItemEventRouterRequest"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; +import { ItemEventRouterDefinition } from "@spt/di/Router"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IItemEventRouterRequest } from "@spt/models/eft/itemEvent/IItemEventRouterRequest"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class ItemEventRouter { protected logger: ILogger; protected profileHelper: ProfileHelper; protected itemEventRouters: ItemEventRouterDefinition[]; protected localisationService: LocalisationService; protected eventOutputHolder: EventOutputHolder; - constructor(logger: ILogger, profileHelper: ProfileHelper, itemEventRouters: ItemEventRouterDefinition[], localisationService: LocalisationService, eventOutputHolder: EventOutputHolder); + protected cloner: ICloner; + constructor(logger: ILogger, profileHelper: ProfileHelper, itemEventRouters: ItemEventRouterDefinition[], localisationService: LocalisationService, eventOutputHolder: EventOutputHolder, cloner: ICloner); /** * @param info Event request * @param sessionID Session id * @returns Item response */ - handleEvents(info: IItemEventRouterRequest, sessionID: string): IItemEventRouterResponse; + handleEvents(info: IItemEventRouterRequest, sessionID: string): Promise; } diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/BotDynamicRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/BotDynamicRouter.d.ts index 5c54065..9b1131d 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/BotDynamicRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/BotDynamicRouter.d.ts @@ -1,5 +1,5 @@ -import { BotCallbacks } from "@spt-aki/callbacks/BotCallbacks"; -import { DynamicRouter } from "@spt-aki/di/Router"; +import { BotCallbacks } from "@spt/callbacks/BotCallbacks"; +import { DynamicRouter } from "@spt/di/Router"; export declare class BotDynamicRouter extends DynamicRouter { protected botCallbacks: BotCallbacks; constructor(botCallbacks: BotCallbacks); diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/BundleDynamicRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/BundleDynamicRouter.d.ts index c73860a..c552c6d 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/BundleDynamicRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/BundleDynamicRouter.d.ts @@ -1,5 +1,5 @@ -import { BundleCallbacks } from "@spt-aki/callbacks/BundleCallbacks"; -import { DynamicRouter } from "@spt-aki/di/Router"; +import { BundleCallbacks } from "@spt/callbacks/BundleCallbacks"; +import { DynamicRouter } from "@spt/di/Router"; export declare class BundleDynamicRouter extends DynamicRouter { protected bundleCallbacks: BundleCallbacks; constructor(bundleCallbacks: BundleCallbacks); diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/CustomizationDynamicRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/CustomizationDynamicRouter.d.ts index 79e60e6..b7f4956 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/CustomizationDynamicRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/CustomizationDynamicRouter.d.ts @@ -1,5 +1,5 @@ -import { CustomizationCallbacks } from "@spt-aki/callbacks/CustomizationCallbacks"; -import { DynamicRouter } from "@spt-aki/di/Router"; +import { CustomizationCallbacks } from "@spt/callbacks/CustomizationCallbacks"; +import { DynamicRouter } from "@spt/di/Router"; export declare class CustomizationDynamicRouter extends DynamicRouter { protected customizationCallbacks: CustomizationCallbacks; constructor(customizationCallbacks: CustomizationCallbacks); diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/DataDynamicRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/DataDynamicRouter.d.ts index 098748f..d71fde1 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/DataDynamicRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/DataDynamicRouter.d.ts @@ -1,5 +1,5 @@ -import { DataCallbacks } from "@spt-aki/callbacks/DataCallbacks"; -import { DynamicRouter } from "@spt-aki/di/Router"; +import { DataCallbacks } from "@spt/callbacks/DataCallbacks"; +import { DynamicRouter } from "@spt/di/Router"; export declare class DataDynamicRouter extends DynamicRouter { protected dataCallbacks: DataCallbacks; constructor(dataCallbacks: DataCallbacks); diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/HttpDynamicRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/HttpDynamicRouter.d.ts index 5fda392..01d1ffb 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/HttpDynamicRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/HttpDynamicRouter.d.ts @@ -1,5 +1,5 @@ -import { DynamicRouter } from "@spt-aki/di/Router"; -import { ImageRouter } from "@spt-aki/routers/ImageRouter"; +import { DynamicRouter } from "@spt/di/Router"; +import { ImageRouter } from "@spt/routers/ImageRouter"; export declare class HttpDynamicRouter extends DynamicRouter { protected imageRouter: ImageRouter; constructor(imageRouter: ImageRouter); diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/InraidDynamicRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/InraidDynamicRouter.d.ts index b68282e..e4cf1eb 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/InraidDynamicRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/InraidDynamicRouter.d.ts @@ -1,5 +1,5 @@ -import { InraidCallbacks } from "@spt-aki/callbacks/InraidCallbacks"; -import { DynamicRouter } from "@spt-aki/di/Router"; +import { InraidCallbacks } from "@spt/callbacks/InraidCallbacks"; +import { DynamicRouter } from "@spt/di/Router"; export declare class InraidDynamicRouter extends DynamicRouter { protected inraidCallbacks: InraidCallbacks; constructor(inraidCallbacks: InraidCallbacks); diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/LocationDynamicRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/LocationDynamicRouter.d.ts index aef354f..a52f8d6 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/LocationDynamicRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/LocationDynamicRouter.d.ts @@ -1,5 +1,5 @@ -import { LocationCallbacks } from "@spt-aki/callbacks/LocationCallbacks"; -import { DynamicRouter } from "@spt-aki/di/Router"; +import { LocationCallbacks } from "@spt/callbacks/LocationCallbacks"; +import { DynamicRouter } from "@spt/di/Router"; export declare class LocationDynamicRouter extends DynamicRouter { protected locationCallbacks: LocationCallbacks; constructor(locationCallbacks: LocationCallbacks); diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/NotifierDynamicRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/NotifierDynamicRouter.d.ts index f1c0ea7..c00c80e 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/NotifierDynamicRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/NotifierDynamicRouter.d.ts @@ -1,5 +1,5 @@ -import { NotifierCallbacks } from "@spt-aki/callbacks/NotifierCallbacks"; -import { DynamicRouter } from "@spt-aki/di/Router"; +import { NotifierCallbacks } from "@spt/callbacks/NotifierCallbacks"; +import { DynamicRouter } from "@spt/di/Router"; export declare class NotifierDynamicRouter extends DynamicRouter { protected notifierCallbacks: NotifierCallbacks; constructor(notifierCallbacks: NotifierCallbacks); diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/TraderDynamicRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/TraderDynamicRouter.d.ts index 2cde752..cdd6b71 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/TraderDynamicRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/dynamic/TraderDynamicRouter.d.ts @@ -1,5 +1,5 @@ -import { TraderCallbacks } from "@spt-aki/callbacks/TraderCallbacks"; -import { DynamicRouter } from "@spt-aki/di/Router"; +import { TraderCallbacks } from "@spt/callbacks/TraderCallbacks"; +import { DynamicRouter } from "@spt/di/Router"; export declare class TraderDynamicRouter extends DynamicRouter { protected traderCallbacks: TraderCallbacks; constructor(traderCallbacks: TraderCallbacks); diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/item_events/CustomizationItemEventRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/item_events/CustomizationItemEventRouter.d.ts index 473c8ed..c9babf3 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/item_events/CustomizationItemEventRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/item_events/CustomizationItemEventRouter.d.ts @@ -1,10 +1,10 @@ -import { CustomizationCallbacks } from "@spt-aki/callbacks/CustomizationCallbacks"; -import { HandledRoute, ItemEventRouterDefinition } from "@spt-aki/di/Router"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; +import { CustomizationCallbacks } from "@spt/callbacks/CustomizationCallbacks"; +import { HandledRoute, ItemEventRouterDefinition } from "@spt/di/Router"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; export declare class CustomizationItemEventRouter extends ItemEventRouterDefinition { protected customizationCallbacks: CustomizationCallbacks; constructor(customizationCallbacks: CustomizationCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): IItemEventRouterResponse; + handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; } diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/item_events/HealthItemEventRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/item_events/HealthItemEventRouter.d.ts index 5243153..490884f 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/item_events/HealthItemEventRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/item_events/HealthItemEventRouter.d.ts @@ -1,10 +1,10 @@ -import { HealthCallbacks } from "@spt-aki/callbacks/HealthCallbacks"; -import { HandledRoute, ItemEventRouterDefinition } from "@spt-aki/di/Router"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; +import { HealthCallbacks } from "@spt/callbacks/HealthCallbacks"; +import { HandledRoute, ItemEventRouterDefinition } from "@spt/di/Router"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; export declare class HealthItemEventRouter extends ItemEventRouterDefinition { protected healthCallbacks: HealthCallbacks; constructor(healthCallbacks: HealthCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): IItemEventRouterResponse; + handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; } diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/item_events/HideoutItemEventRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/item_events/HideoutItemEventRouter.d.ts index 8775212..6839fee 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/item_events/HideoutItemEventRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/item_events/HideoutItemEventRouter.d.ts @@ -1,10 +1,10 @@ -import { HideoutCallbacks } from "@spt-aki/callbacks/HideoutCallbacks"; -import { HandledRoute, ItemEventRouterDefinition } from "@spt-aki/di/Router"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; +import { HideoutCallbacks } from "@spt/callbacks/HideoutCallbacks"; +import { HandledRoute, ItemEventRouterDefinition } from "@spt/di/Router"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; export declare class HideoutItemEventRouter extends ItemEventRouterDefinition { protected hideoutCallbacks: HideoutCallbacks; constructor(hideoutCallbacks: HideoutCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): IItemEventRouterResponse; + handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string, output: IItemEventRouterResponse): Promise; } diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/item_events/InsuranceItemEventRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/item_events/InsuranceItemEventRouter.d.ts index f2c9ab6..af2b3dc 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/item_events/InsuranceItemEventRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/item_events/InsuranceItemEventRouter.d.ts @@ -1,10 +1,10 @@ -import { InsuranceCallbacks } from "@spt-aki/callbacks/InsuranceCallbacks"; -import { HandledRoute, ItemEventRouterDefinition } from "@spt-aki/di/Router"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; +import { InsuranceCallbacks } from "@spt/callbacks/InsuranceCallbacks"; +import { HandledRoute, ItemEventRouterDefinition } from "@spt/di/Router"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; export declare class InsuranceItemEventRouter extends ItemEventRouterDefinition { protected insuranceCallbacks: InsuranceCallbacks; constructor(insuranceCallbacks: InsuranceCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): IItemEventRouterResponse; + handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; } diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/item_events/InventoryItemEventRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/item_events/InventoryItemEventRouter.d.ts index cb93d29..660de81 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/item_events/InventoryItemEventRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/item_events/InventoryItemEventRouter.d.ts @@ -1,12 +1,12 @@ -import { HideoutCallbacks } from "@spt-aki/callbacks/HideoutCallbacks"; -import { InventoryCallbacks } from "@spt-aki/callbacks/InventoryCallbacks"; -import { HandledRoute, ItemEventRouterDefinition } from "@spt-aki/di/Router"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; +import { HideoutCallbacks } from "@spt/callbacks/HideoutCallbacks"; +import { InventoryCallbacks } from "@spt/callbacks/InventoryCallbacks"; +import { HandledRoute, ItemEventRouterDefinition } from "@spt/di/Router"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; export declare class InventoryItemEventRouter extends ItemEventRouterDefinition { protected inventoryCallbacks: InventoryCallbacks; protected hideoutCallbacks: HideoutCallbacks; constructor(inventoryCallbacks: InventoryCallbacks, hideoutCallbacks: HideoutCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): IItemEventRouterResponse; + handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string, output: IItemEventRouterResponse): Promise; } diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/item_events/NoteItemEventRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/item_events/NoteItemEventRouter.d.ts index 35907cc..b415c3a 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/item_events/NoteItemEventRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/item_events/NoteItemEventRouter.d.ts @@ -1,11 +1,11 @@ -import { NoteCallbacks } from "@spt-aki/callbacks/NoteCallbacks"; -import { HandledRoute, ItemEventRouterDefinition } from "@spt-aki/di/Router"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { INoteActionData } from "@spt-aki/models/eft/notes/INoteActionData"; +import { NoteCallbacks } from "@spt/callbacks/NoteCallbacks"; +import { HandledRoute, ItemEventRouterDefinition } from "@spt/di/Router"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { INoteActionData } from "@spt/models/eft/notes/INoteActionData"; export declare class NoteItemEventRouter extends ItemEventRouterDefinition { protected noteCallbacks: NoteCallbacks; constructor(noteCallbacks: NoteCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: INoteActionData, sessionID: string): IItemEventRouterResponse; + handleItemEvent(url: string, pmcData: IPmcData, body: INoteActionData, sessionID: string): Promise; } diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/item_events/PresetBuildItemEventRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/item_events/PresetBuildItemEventRouter.d.ts deleted file mode 100644 index d5dbf9d..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/routers/item_events/PresetBuildItemEventRouter.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { PresetBuildCallbacks } from "@spt-aki/callbacks/PresetBuildCallbacks"; -import { HandledRoute, ItemEventRouterDefinition } from "@spt-aki/di/Router"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -export declare class PresetBuildItemEventRouter extends ItemEventRouterDefinition { - protected presetBuildCallbacks: PresetBuildCallbacks; - constructor(presetBuildCallbacks: PresetBuildCallbacks); - getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): IItemEventRouterResponse; -} diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/item_events/QuestItemEventRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/item_events/QuestItemEventRouter.d.ts index 32715e5..1ce94f9 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/item_events/QuestItemEventRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/item_events/QuestItemEventRouter.d.ts @@ -1,12 +1,12 @@ -import { QuestCallbacks } from "@spt-aki/callbacks/QuestCallbacks"; -import { HandledRoute, ItemEventRouterDefinition } from "@spt-aki/di/Router"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; +import { QuestCallbacks } from "@spt/callbacks/QuestCallbacks"; +import { HandledRoute, ItemEventRouterDefinition } from "@spt/di/Router"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; export declare class QuestItemEventRouter extends ItemEventRouterDefinition { protected logger: ILogger; protected questCallbacks: QuestCallbacks; constructor(logger: ILogger, questCallbacks: QuestCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(eventAction: string, pmcData: IPmcData, body: any, sessionID: string): IItemEventRouterResponse; + handleItemEvent(eventAction: string, pmcData: IPmcData, body: any, sessionID: string): Promise; } diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/item_events/RagfairItemEventRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/item_events/RagfairItemEventRouter.d.ts index b8cf48c..09cdbf6 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/item_events/RagfairItemEventRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/item_events/RagfairItemEventRouter.d.ts @@ -1,10 +1,10 @@ -import { RagfairCallbacks } from "@spt-aki/callbacks/RagfairCallbacks"; -import { HandledRoute, ItemEventRouterDefinition } from "@spt-aki/di/Router"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; +import { RagfairCallbacks } from "@spt/callbacks/RagfairCallbacks"; +import { HandledRoute, ItemEventRouterDefinition } from "@spt/di/Router"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; export declare class RagfairItemEventRouter extends ItemEventRouterDefinition { protected ragfairCallbacks: RagfairCallbacks; constructor(ragfairCallbacks: RagfairCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): IItemEventRouterResponse; + handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; } diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/item_events/RepairItemEventRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/item_events/RepairItemEventRouter.d.ts index 282c47a..d2f857d 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/item_events/RepairItemEventRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/item_events/RepairItemEventRouter.d.ts @@ -1,10 +1,10 @@ -import { RepairCallbacks } from "@spt-aki/callbacks/RepairCallbacks"; -import { HandledRoute, ItemEventRouterDefinition } from "@spt-aki/di/Router"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; +import { RepairCallbacks } from "@spt/callbacks/RepairCallbacks"; +import { HandledRoute, ItemEventRouterDefinition } from "@spt/di/Router"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; export declare class RepairItemEventRouter extends ItemEventRouterDefinition { protected repairCallbacks: RepairCallbacks; constructor(repairCallbacks: RepairCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): IItemEventRouterResponse; + handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; } diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/item_events/TradeItemEventRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/item_events/TradeItemEventRouter.d.ts index 1494963..5617ab3 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/item_events/TradeItemEventRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/item_events/TradeItemEventRouter.d.ts @@ -1,10 +1,10 @@ -import { TradeCallbacks } from "@spt-aki/callbacks/TradeCallbacks"; -import { HandledRoute, ItemEventRouterDefinition } from "@spt-aki/di/Router"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; +import { TradeCallbacks } from "@spt/callbacks/TradeCallbacks"; +import { HandledRoute, ItemEventRouterDefinition } from "@spt/di/Router"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; export declare class TradeItemEventRouter extends ItemEventRouterDefinition { protected tradeCallbacks: TradeCallbacks; constructor(tradeCallbacks: TradeCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): IItemEventRouterResponse; + handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; } diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/item_events/WishlistItemEventRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/item_events/WishlistItemEventRouter.d.ts index 1d6f601..bc6d257 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/item_events/WishlistItemEventRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/item_events/WishlistItemEventRouter.d.ts @@ -1,10 +1,10 @@ -import { WishlistCallbacks } from "@spt-aki/callbacks/WishlistCallbacks"; -import { HandledRoute, ItemEventRouterDefinition } from "@spt-aki/di/Router"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; +import { WishlistCallbacks } from "@spt/callbacks/WishlistCallbacks"; +import { HandledRoute, ItemEventRouterDefinition } from "@spt/di/Router"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; export declare class WishlistItemEventRouter extends ItemEventRouterDefinition { protected wishlistCallbacks: WishlistCallbacks; constructor(wishlistCallbacks: WishlistCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): IItemEventRouterResponse; + handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; } diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/save_load/HealthSaveLoadRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/save_load/HealthSaveLoadRouter.d.ts index 1ecfa44..df04248 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/save_load/HealthSaveLoadRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/save_load/HealthSaveLoadRouter.d.ts @@ -1,6 +1,6 @@ -import { HandledRoute, SaveLoadRouter } from "@spt-aki/di/Router"; -import { IAkiProfile } from "@spt-aki/models/eft/profile/IAkiProfile"; +import { HandledRoute, SaveLoadRouter } from "@spt/di/Router"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; export declare class HealthSaveLoadRouter extends SaveLoadRouter { getHandledRoutes(): HandledRoute[]; - handleLoad(profile: IAkiProfile): IAkiProfile; + handleLoad(profile: ISptProfile): ISptProfile; } diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/save_load/InraidSaveLoadRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/save_load/InraidSaveLoadRouter.d.ts index 7cc9a08..3ea61fa 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/save_load/InraidSaveLoadRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/save_load/InraidSaveLoadRouter.d.ts @@ -1,6 +1,6 @@ -import { HandledRoute, SaveLoadRouter } from "@spt-aki/di/Router"; -import { IAkiProfile } from "@spt-aki/models/eft/profile/IAkiProfile"; +import { HandledRoute, SaveLoadRouter } from "@spt/di/Router"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; export declare class InraidSaveLoadRouter extends SaveLoadRouter { getHandledRoutes(): HandledRoute[]; - handleLoad(profile: IAkiProfile): IAkiProfile; + handleLoad(profile: ISptProfile): ISptProfile; } diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/save_load/InsuranceSaveLoadRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/save_load/InsuranceSaveLoadRouter.d.ts index af5222a..ba8cb8a 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/save_load/InsuranceSaveLoadRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/save_load/InsuranceSaveLoadRouter.d.ts @@ -1,6 +1,6 @@ -import { HandledRoute, SaveLoadRouter } from "@spt-aki/di/Router"; -import { IAkiProfile } from "@spt-aki/models/eft/profile/IAkiProfile"; +import { HandledRoute, SaveLoadRouter } from "@spt/di/Router"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; export declare class InsuranceSaveLoadRouter extends SaveLoadRouter { getHandledRoutes(): HandledRoute[]; - handleLoad(profile: IAkiProfile): IAkiProfile; + handleLoad(profile: ISptProfile): ISptProfile; } diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/save_load/ProfileSaveLoadRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/save_load/ProfileSaveLoadRouter.d.ts index 8047834..77d50bd 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/save_load/ProfileSaveLoadRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/save_load/ProfileSaveLoadRouter.d.ts @@ -1,6 +1,6 @@ -import { HandledRoute, SaveLoadRouter } from "@spt-aki/di/Router"; -import { IAkiProfile } from "@spt-aki/models/eft/profile/IAkiProfile"; +import { HandledRoute, SaveLoadRouter } from "@spt/di/Router"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; export declare class ProfileSaveLoadRouter extends SaveLoadRouter { getHandledRoutes(): HandledRoute[]; - handleLoad(profile: IAkiProfile): IAkiProfile; + handleLoad(profile: ISptProfile): ISptProfile; } diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/serializers/BundleSerializer.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/serializers/BundleSerializer.d.ts index 52db030..dc71cd8 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/serializers/BundleSerializer.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/serializers/BundleSerializer.d.ts @@ -1,9 +1,9 @@ /// import { IncomingMessage, ServerResponse } from "node:http"; -import { Serializer } from "@spt-aki/di/Serializer"; -import { BundleLoader } from "@spt-aki/loaders/BundleLoader"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { HttpFileUtil } from "@spt-aki/utils/HttpFileUtil"; +import { Serializer } from "@spt/di/Serializer"; +import { BundleLoader } from "@spt/loaders/BundleLoader"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { HttpFileUtil } from "@spt/utils/HttpFileUtil"; export declare class BundleSerializer extends Serializer { protected logger: ILogger; protected bundleLoader: BundleLoader; diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/serializers/ImageSerializer.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/serializers/ImageSerializer.d.ts index 3b1ff6d..5c77243 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/serializers/ImageSerializer.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/serializers/ImageSerializer.d.ts @@ -1,7 +1,7 @@ /// import { IncomingMessage, ServerResponse } from "node:http"; -import { Serializer } from "@spt-aki/di/Serializer"; -import { ImageRouter } from "@spt-aki/routers/ImageRouter"; +import { Serializer } from "@spt/di/Serializer"; +import { ImageRouter } from "@spt/routers/ImageRouter"; export declare class ImageSerializer extends Serializer { protected imageRouter: ImageRouter; constructor(imageRouter: ImageRouter); diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/serializers/NotifySerializer.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/serializers/NotifySerializer.d.ts index f8730b6..8c07f81 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/serializers/NotifySerializer.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/serializers/NotifySerializer.d.ts @@ -1,9 +1,9 @@ /// import { IncomingMessage, ServerResponse } from "node:http"; -import { NotifierController } from "@spt-aki/controllers/NotifierController"; -import { Serializer } from "@spt-aki/di/Serializer"; -import { HttpServerHelper } from "@spt-aki/helpers/HttpServerHelper"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; +import { NotifierController } from "@spt/controllers/NotifierController"; +import { Serializer } from "@spt/di/Serializer"; +import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { JsonUtil } from "@spt/utils/JsonUtil"; export declare class NotifySerializer extends Serializer { protected notifierController: NotifierController; protected jsonUtil: JsonUtil; diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/static/AchievementStaticRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/static/AchievementStaticRouter.d.ts new file mode 100644 index 0000000..80e3ae6 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/routers/static/AchievementStaticRouter.d.ts @@ -0,0 +1,6 @@ +import { AchievementCallbacks } from "@spt/callbacks/AchievementCallbacks"; +import { StaticRouter } from "@spt/di/Router"; +export declare class AchievementStaticRouter extends StaticRouter { + protected achievementCallbacks: AchievementCallbacks; + constructor(achievementCallbacks: AchievementCallbacks); +} diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/static/BotStaticRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/static/BotStaticRouter.d.ts index e7e9ff5..2a164a5 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/static/BotStaticRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/static/BotStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { BotCallbacks } from "@spt-aki/callbacks/BotCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { BotCallbacks } from "@spt/callbacks/BotCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class BotStaticRouter extends StaticRouter { protected botCallbacks: BotCallbacks; constructor(botCallbacks: BotCallbacks); diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/static/BuildStaticRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/static/BuildStaticRouter.d.ts new file mode 100644 index 0000000..c5c3a5e --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/routers/static/BuildStaticRouter.d.ts @@ -0,0 +1,6 @@ +import { BuildsCallbacks } from "@spt/callbacks/BuildsCallbacks"; +import { StaticRouter } from "@spt/di/Router"; +export declare class BuildsStaticRouter extends StaticRouter { + protected buildsCallbacks: BuildsCallbacks; + constructor(buildsCallbacks: BuildsCallbacks); +} diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/static/BundleStaticRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/static/BundleStaticRouter.d.ts index 62056ba..070d981 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/static/BundleStaticRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/static/BundleStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { BundleCallbacks } from "@spt-aki/callbacks/BundleCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { BundleCallbacks } from "@spt/callbacks/BundleCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class BundleStaticRouter extends StaticRouter { protected bundleCallbacks: BundleCallbacks; constructor(bundleCallbacks: BundleCallbacks); diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/static/ClientLogStaticRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/static/ClientLogStaticRouter.d.ts index 6ae3f50..2df39ad 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/static/ClientLogStaticRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/static/ClientLogStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { ClientLogCallbacks } from "@spt-aki/callbacks/ClientLogCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { ClientLogCallbacks } from "@spt/callbacks/ClientLogCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class ClientLogStaticRouter extends StaticRouter { protected clientLogCallbacks: ClientLogCallbacks; constructor(clientLogCallbacks: ClientLogCallbacks); diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/static/CustomizationStaticRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/static/CustomizationStaticRouter.d.ts index cebf043..5d80536 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/static/CustomizationStaticRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/static/CustomizationStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { CustomizationCallbacks } from "@spt-aki/callbacks/CustomizationCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { CustomizationCallbacks } from "@spt/callbacks/CustomizationCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class CustomizationStaticRouter extends StaticRouter { protected customizationCallbacks: CustomizationCallbacks; constructor(customizationCallbacks: CustomizationCallbacks); diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/static/DataStaticRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/static/DataStaticRouter.d.ts index 7e84ae1..f59a136 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/static/DataStaticRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/static/DataStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { DataCallbacks } from "@spt-aki/callbacks/DataCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { DataCallbacks } from "@spt/callbacks/DataCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class DataStaticRouter extends StaticRouter { protected dataCallbacks: DataCallbacks; constructor(dataCallbacks: DataCallbacks); diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/static/DialogStaticRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/static/DialogStaticRouter.d.ts index 7f3ef7a..5a17ba4 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/static/DialogStaticRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/static/DialogStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { DialogueCallbacks } from "@spt-aki/callbacks/DialogueCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { DialogueCallbacks } from "@spt/callbacks/DialogueCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class DialogStaticRouter extends StaticRouter { protected dialogueCallbacks: DialogueCallbacks; constructor(dialogueCallbacks: DialogueCallbacks); diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/static/GameStaticRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/static/GameStaticRouter.d.ts index 878f494..bf045af 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/static/GameStaticRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/static/GameStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { GameCallbacks } from "@spt-aki/callbacks/GameCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { GameCallbacks } from "@spt/callbacks/GameCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class GameStaticRouter extends StaticRouter { protected gameCallbacks: GameCallbacks; constructor(gameCallbacks: GameCallbacks); diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/static/HealthStaticRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/static/HealthStaticRouter.d.ts index 79dedea..d968017 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/static/HealthStaticRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/static/HealthStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { HealthCallbacks } from "@spt-aki/callbacks/HealthCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { HealthCallbacks } from "@spt/callbacks/HealthCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class HealthStaticRouter extends StaticRouter { protected healthCallbacks: HealthCallbacks; constructor(healthCallbacks: HealthCallbacks); diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/static/InraidStaticRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/static/InraidStaticRouter.d.ts index eb9c3b1..2a0da3c 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/static/InraidStaticRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/static/InraidStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { InraidCallbacks } from "@spt-aki/callbacks/InraidCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { InraidCallbacks } from "@spt/callbacks/InraidCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class InraidStaticRouter extends StaticRouter { protected inraidCallbacks: InraidCallbacks; constructor(inraidCallbacks: InraidCallbacks); diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/static/InsuranceStaticRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/static/InsuranceStaticRouter.d.ts index 58c1583..99e394f 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/static/InsuranceStaticRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/static/InsuranceStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { InsuranceCallbacks } from "@spt-aki/callbacks/InsuranceCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { InsuranceCallbacks } from "@spt/callbacks/InsuranceCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class InsuranceStaticRouter extends StaticRouter { protected insuranceCallbacks: InsuranceCallbacks; constructor(insuranceCallbacks: InsuranceCallbacks); diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/static/ItemEventStaticRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/static/ItemEventStaticRouter.d.ts index 772493a..b23856d 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/static/ItemEventStaticRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/static/ItemEventStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { ItemEventCallbacks } from "@spt-aki/callbacks/ItemEventCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { ItemEventCallbacks } from "@spt/callbacks/ItemEventCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class ItemEventStaticRouter extends StaticRouter { protected itemEventCallbacks: ItemEventCallbacks; constructor(itemEventCallbacks: ItemEventCallbacks); diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/static/LauncherStaticRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/static/LauncherStaticRouter.d.ts index 46a5bd6..08312d2 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/static/LauncherStaticRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/static/LauncherStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { LauncherCallbacks } from "@spt-aki/callbacks/LauncherCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { LauncherCallbacks } from "@spt/callbacks/LauncherCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class LauncherStaticRouter extends StaticRouter { protected launcherCallbacks: LauncherCallbacks; constructor(launcherCallbacks: LauncherCallbacks); diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/static/LocationStaticRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/static/LocationStaticRouter.d.ts index f577ba9..9a2e16c 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/static/LocationStaticRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/static/LocationStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { LocationCallbacks } from "@spt-aki/callbacks/LocationCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { LocationCallbacks } from "@spt/callbacks/LocationCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class LocationStaticRouter extends StaticRouter { protected locationCallbacks: LocationCallbacks; constructor(locationCallbacks: LocationCallbacks); diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/static/MatchStaticRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/static/MatchStaticRouter.d.ts index e26c8bd..955ce34 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/static/MatchStaticRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/static/MatchStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { MatchCallbacks } from "@spt-aki/callbacks/MatchCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { MatchCallbacks } from "@spt/callbacks/MatchCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class MatchStaticRouter extends StaticRouter { protected matchCallbacks: MatchCallbacks; constructor(matchCallbacks: MatchCallbacks); diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/static/NotifierStaticRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/static/NotifierStaticRouter.d.ts index 9427d00..7cb4756 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/static/NotifierStaticRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/static/NotifierStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { NotifierCallbacks } from "@spt-aki/callbacks/NotifierCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { NotifierCallbacks } from "@spt/callbacks/NotifierCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class NotifierStaticRouter extends StaticRouter { protected notifierCallbacks: NotifierCallbacks; constructor(notifierCallbacks: NotifierCallbacks); diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/static/PresetStaticRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/static/PresetStaticRouter.d.ts deleted file mode 100644 index cac8da6..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/routers/static/PresetStaticRouter.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { PresetBuildCallbacks } from "@spt-aki/callbacks/PresetBuildCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; -export declare class PresetStaticRouter extends StaticRouter { - protected presetCallbacks: PresetBuildCallbacks; - constructor(presetCallbacks: PresetBuildCallbacks); -} diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/static/ProfileStaticRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/static/ProfileStaticRouter.d.ts index 31470f3..cb6aa84 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/static/ProfileStaticRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/static/ProfileStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { ProfileCallbacks } from "@spt-aki/callbacks/ProfileCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { ProfileCallbacks } from "@spt/callbacks/ProfileCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class ProfileStaticRouter extends StaticRouter { protected profileCallbacks: ProfileCallbacks; constructor(profileCallbacks: ProfileCallbacks); diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/static/QuestStaticRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/static/QuestStaticRouter.d.ts index a505e5c..9c0e710 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/static/QuestStaticRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/static/QuestStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { QuestCallbacks } from "@spt-aki/callbacks/QuestCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { QuestCallbacks } from "@spt/callbacks/QuestCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class QuestStaticRouter extends StaticRouter { protected questCallbacks: QuestCallbacks; constructor(questCallbacks: QuestCallbacks); diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/static/RagfairStaticRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/static/RagfairStaticRouter.d.ts index e56a9c1..475e1ee 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/static/RagfairStaticRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/static/RagfairStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { RagfairCallbacks } from "@spt-aki/callbacks/RagfairCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { RagfairCallbacks } from "@spt/callbacks/RagfairCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class RagfairStaticRouter extends StaticRouter { protected ragfairCallbacks: RagfairCallbacks; constructor(ragfairCallbacks: RagfairCallbacks); diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/static/TraderStaticRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/static/TraderStaticRouter.d.ts index 1b9cbd1..e7d5ee1 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/static/TraderStaticRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/static/TraderStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { TraderCallbacks } from "@spt-aki/callbacks/TraderCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { TraderCallbacks } from "@spt/callbacks/TraderCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class TraderStaticRouter extends StaticRouter { protected traderCallbacks: TraderCallbacks; constructor(traderCallbacks: TraderCallbacks); diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/static/WeatherStaticRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/static/WeatherStaticRouter.d.ts index 499f911..d3055e6 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/static/WeatherStaticRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/static/WeatherStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { WeatherCallbacks } from "@spt-aki/callbacks/WeatherCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { WeatherCallbacks } from "@spt/callbacks/WeatherCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class WeatherStaticRouter extends StaticRouter { protected weatherCallbacks: WeatherCallbacks; constructor(weatherCallbacks: WeatherCallbacks); diff --git a/TypeScript/23CustomAbstractChatBot/types/servers/ConfigServer.d.ts b/TypeScript/23CustomAbstractChatBot/types/servers/ConfigServer.d.ts index c932dfe..6f9bc83 100644 --- a/TypeScript/23CustomAbstractChatBot/types/servers/ConfigServer.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/servers/ConfigServer.d.ts @@ -1,7 +1,7 @@ -import { ConfigTypes } from "@spt-aki/models/enums/ConfigTypes"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { VFS } from "@spt-aki/utils/VFS"; +import { ConfigTypes } from "@spt/models/enums/ConfigTypes"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { JsonUtil } from "@spt/utils/JsonUtil"; +import { VFS } from "@spt/utils/VFS"; export declare class ConfigServer { protected logger: ILogger; protected vfs: VFS; diff --git a/TypeScript/23CustomAbstractChatBot/types/servers/DatabaseServer.d.ts b/TypeScript/23CustomAbstractChatBot/types/servers/DatabaseServer.d.ts index fc69a61..c198a87 100644 --- a/TypeScript/23CustomAbstractChatBot/types/servers/DatabaseServer.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/servers/DatabaseServer.d.ts @@ -1,4 +1,4 @@ -import { IDatabaseTables } from "@spt-aki/models/spt/server/IDatabaseTables"; +import { IDatabaseTables } from "@spt/models/spt/server/IDatabaseTables"; export declare class DatabaseServer { protected tableData: IDatabaseTables; getTables(): IDatabaseTables; diff --git a/TypeScript/23CustomAbstractChatBot/types/servers/HttpServer.d.ts b/TypeScript/23CustomAbstractChatBot/types/servers/HttpServer.d.ts index 20b7999..b00fe68 100644 --- a/TypeScript/23CustomAbstractChatBot/types/servers/HttpServer.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/servers/HttpServer.d.ts @@ -1,14 +1,14 @@ /// -import http, { IncomingMessage, ServerResponse } from "node:http"; -import { ApplicationContext } from "@spt-aki/context/ApplicationContext"; -import { HttpServerHelper } from "@spt-aki/helpers/HttpServerHelper"; -import { IHttpConfig } from "@spt-aki/models/spt/config/IHttpConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { WebSocketServer } from "@spt-aki/servers/WebSocketServer"; -import { IHttpListener } from "@spt-aki/servers/http/IHttpListener"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; +import { IncomingMessage, ServerResponse } from "node:http"; +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { IHttpListener } from "@spt/servers/http/IHttpListener"; +import { WebSocketServer } from "@spt/servers/WebSocketServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; export declare class HttpServer { protected logger: ILogger; protected databaseServer: DatabaseServer; @@ -19,11 +19,19 @@ export declare class HttpServer { protected applicationContext: ApplicationContext; protected webSocketServer: WebSocketServer; protected httpConfig: IHttpConfig; + protected started: boolean; constructor(logger: ILogger, databaseServer: DatabaseServer, httpServerHelper: HttpServerHelper, localisationService: LocalisationService, httpListeners: IHttpListener[], configServer: ConfigServer, applicationContext: ApplicationContext, webSocketServer: WebSocketServer); /** * Handle server loading event */ load(): void; protected handleRequest(req: IncomingMessage, resp: ServerResponse): void; - protected getCookies(req: http.IncomingMessage): Record; + /** + * Check against hardcoded values that determine its from a local address + * @param remoteAddress Address to check + * @returns True if its local + */ + protected isLocalRequest(remoteAddress: string): boolean; + protected getCookies(req: IncomingMessage): Record; + isStarted(): boolean; } diff --git a/TypeScript/23CustomAbstractChatBot/types/servers/RagfairServer.d.ts b/TypeScript/23CustomAbstractChatBot/types/servers/RagfairServer.d.ts index f6f9730..af3acf3 100644 --- a/TypeScript/23CustomAbstractChatBot/types/servers/RagfairServer.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/servers/RagfairServer.d.ts @@ -1,15 +1,15 @@ -import { RagfairOfferGenerator } from "@spt-aki/generators/RagfairOfferGenerator"; -import { TraderAssortHelper } from "@spt-aki/helpers/TraderAssortHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { IRagfairOffer } from "@spt-aki/models/eft/ragfair/IRagfairOffer"; -import { ISearchRequestData } from "@spt-aki/models/eft/ragfair/ISearchRequestData"; -import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { RagfairCategoriesService } from "@spt-aki/services/RagfairCategoriesService"; -import { RagfairOfferService } from "@spt-aki/services/RagfairOfferService"; -import { RagfairRequiredItemsService } from "@spt-aki/services/RagfairRequiredItemsService"; +import { RagfairOfferGenerator } from "@spt/generators/RagfairOfferGenerator"; +import { TraderAssortHelper } from "@spt/helpers/TraderAssortHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { IRagfairOffer } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ISearchRequestData } from "@spt/models/eft/ragfair/ISearchRequestData"; +import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { RagfairCategoriesService } from "@spt/services/RagfairCategoriesService"; +import { RagfairOfferService } from "@spt/services/RagfairOfferService"; +import { RagfairRequiredItemsService } from "@spt/services/RagfairRequiredItemsService"; export declare class RagfairServer { protected logger: ILogger; protected ragfairOfferGenerator: RagfairOfferGenerator; diff --git a/TypeScript/23CustomAbstractChatBot/types/servers/SaveServer.d.ts b/TypeScript/23CustomAbstractChatBot/types/servers/SaveServer.d.ts index 88a9b26..54c0f0a 100644 --- a/TypeScript/23CustomAbstractChatBot/types/servers/SaveServer.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/servers/SaveServer.d.ts @@ -1,11 +1,11 @@ -import { SaveLoadRouter } from "@spt-aki/di/Router"; -import { IAkiProfile, Info } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { VFS } from "@spt-aki/utils/VFS"; -import { ConfigServer } from "./ConfigServer"; +import { SaveLoadRouter } from "@spt/di/Router"; +import { ISptProfile, Info } from "@spt/models/eft/profile/ISptProfile"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { JsonUtil } from "@spt/utils/JsonUtil"; +import { VFS } from "@spt/utils/VFS"; export declare class SaveServer { protected vfs: VFS; protected saveLoadRouters: SaveLoadRouter[]; @@ -24,7 +24,7 @@ export declare class SaveServer { * @param id Id for save callback * @param callback Callback to execute prior to running SaveServer.saveProfile() */ - addBeforeSaveCallback(id: string, callback: (profile: Partial) => Partial): void; + addBeforeSaveCallback(id: string, callback: (profile: Partial) => Partial): void; /** * Remove a callback from being executed prior to saving profile in SaveServer.saveProfile() * @param id Id of callback to remove @@ -41,14 +41,15 @@ export declare class SaveServer { /** * Get a player profile from memory * @param sessionId Session id - * @returns IAkiProfile + * @returns ISptProfile */ - getProfile(sessionId: string): IAkiProfile; + getProfile(sessionId: string): ISptProfile; + profileExists(id: string): boolean; /** * Get all profiles from memory - * @returns Dictionary of IAkiProfile + * @returns Dictionary of ISptProfile */ - getProfiles(): Record; + getProfiles(): Record; /** * Delete a profile by id * @param sessionID Id of profile to remove @@ -64,7 +65,7 @@ export declare class SaveServer { * Add full profile in memory by key (info.id) * @param profileDetails Profile to save */ - addProfile(profileDetails: IAkiProfile): void; + addProfile(profileDetails: ISptProfile): void; /** * Look up profile json in user/profiles by id and store in memory * Execute saveLoadRouters callbacks after being loaded into memory @@ -75,8 +76,9 @@ export declare class SaveServer { * Save changes from in-memory profile to user/profiles json * Execute onBeforeSaveCallbacks callbacks prior to being saved to json * @param sessionID profile id (user/profiles/id.json) + * @returns time taken to save in MS */ - saveProfile(sessionID: string): void; + saveProfile(sessionID: string): number; /** * Remove a physical profile json from user/profiles * @param sessionID Profile id to remove diff --git a/TypeScript/23CustomAbstractChatBot/types/servers/WebSocketServer.d.ts b/TypeScript/23CustomAbstractChatBot/types/servers/WebSocketServer.d.ts index e0bf025..f4e07bb 100644 --- a/TypeScript/23CustomAbstractChatBot/types/servers/WebSocketServer.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/servers/WebSocketServer.d.ts @@ -1,31 +1,23 @@ /// import http, { IncomingMessage } from "node:http"; -import WebSocket from "ws"; -import { HttpServerHelper } from "@spt-aki/helpers/HttpServerHelper"; -import { INotification } from "@spt-aki/models/eft/notifier/INotifier"; -import { IHttpConfig } from "@spt-aki/models/spt/config/IHttpConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; +import { WebSocket, Server } from "ws"; +import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { IWebSocketConnectionHandler } from "@spt/servers/ws/IWebSocketConnectionHandler"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { JsonUtil } from "@spt/utils/JsonUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class WebSocketServer { protected logger: ILogger; protected randomUtil: RandomUtil; - protected configServer: ConfigServer; - protected localisationService: LocalisationService; protected jsonUtil: JsonUtil; + protected localisationService: LocalisationService; protected httpServerHelper: HttpServerHelper; - protected profileHelper: ProfileHelper; - constructor(logger: ILogger, randomUtil: RandomUtil, configServer: ConfigServer, localisationService: LocalisationService, jsonUtil: JsonUtil, httpServerHelper: HttpServerHelper, profileHelper: ProfileHelper); - protected httpConfig: IHttpConfig; - protected defaultNotification: INotification; - protected webSockets: Record; - protected websocketPingHandler: any; + protected webSocketConnectionHandlers: IWebSocketConnectionHandler[]; + protected webSocketServer: Server; + constructor(logger: ILogger, randomUtil: RandomUtil, jsonUtil: JsonUtil, localisationService: LocalisationService, httpServerHelper: HttpServerHelper, webSocketConnectionHandlers: IWebSocketConnectionHandler[]); + getWebSocketServer(): Server; setupWebSocket(httpServer: http.Server): void; - sendMessage(sessionID: string, output: INotification): void; protected getRandomisedMessage(): string; - isConnectionWebSocket(sessionID: string): boolean; - protected wsOnConnection(ws: WebSocket.WebSocket, req: IncomingMessage): void; + protected wsOnConnection(ws: WebSocket, req: IncomingMessage): void; } diff --git a/TypeScript/23CustomAbstractChatBot/types/servers/http/IHttpListener.d.ts b/TypeScript/23CustomAbstractChatBot/types/servers/http/IHttpListener.d.ts index 29d5fce..ff148d6 100644 --- a/TypeScript/23CustomAbstractChatBot/types/servers/http/IHttpListener.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/servers/http/IHttpListener.d.ts @@ -2,5 +2,5 @@ import { IncomingMessage, ServerResponse } from "node:http"; export interface IHttpListener { canHandle(sessionId: string, req: IncomingMessage): boolean; - handle(sessionId: string, req: IncomingMessage, resp: ServerResponse): void; + handle(sessionId: string, req: IncomingMessage, resp: ServerResponse): Promise; } diff --git a/TypeScript/24WebSocket/types/servers/http/AkiHttpListener.d.ts b/TypeScript/23CustomAbstractChatBot/types/servers/http/SptHttpListener.d.ts similarity index 74% rename from TypeScript/24WebSocket/types/servers/http/AkiHttpListener.d.ts rename to TypeScript/23CustomAbstractChatBot/types/servers/http/SptHttpListener.d.ts index 4ccdcf6..ef68143 100644 --- a/TypeScript/24WebSocket/types/servers/http/AkiHttpListener.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/servers/http/SptHttpListener.d.ts @@ -1,14 +1,14 @@ /// /// import { IncomingMessage, ServerResponse } from "node:http"; -import { Serializer } from "@spt-aki/di/Serializer"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { HttpRouter } from "@spt-aki/routers/HttpRouter"; -import { IHttpListener } from "@spt-aki/servers/http/IHttpListener"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -export declare class AkiHttpListener implements IHttpListener { +import { Serializer } from "@spt/di/Serializer"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { HttpRouter } from "@spt/routers/HttpRouter"; +import { IHttpListener } from "@spt/servers/http/IHttpListener"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; +import { JsonUtil } from "@spt/utils/JsonUtil"; +export declare class SptHttpListener implements IHttpListener { protected httpRouter: HttpRouter; protected serializers: Serializer[]; protected logger: ILogger; diff --git a/TypeScript/23CustomAbstractChatBot/types/servers/ws/IWebSocketConnectionHandler.d.ts b/TypeScript/23CustomAbstractChatBot/types/servers/ws/IWebSocketConnectionHandler.d.ts new file mode 100644 index 0000000..920dad4 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/servers/ws/IWebSocketConnectionHandler.d.ts @@ -0,0 +1,8 @@ +/// +import { IncomingMessage } from "node:http"; +import { WebSocket } from "ws"; +export interface IWebSocketConnectionHandler { + getSocketId(): string; + getHookUrl(): string; + onConnection(ws: WebSocket, req: IncomingMessage): void; +} diff --git a/TypeScript/24WebSocket/types/servers/ws/AkiWebSocketConnectionHandler.d.ts b/TypeScript/23CustomAbstractChatBot/types/servers/ws/SptWebSocketConnectionHandler.d.ts similarity index 50% rename from TypeScript/24WebSocket/types/servers/ws/AkiWebSocketConnectionHandler.d.ts rename to TypeScript/23CustomAbstractChatBot/types/servers/ws/SptWebSocketConnectionHandler.d.ts index b0b354a..98d0898 100644 --- a/TypeScript/24WebSocket/types/servers/ws/AkiWebSocketConnectionHandler.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/servers/ws/SptWebSocketConnectionHandler.d.ts @@ -1,27 +1,28 @@ /// +/// import { IncomingMessage } from "http"; import { WebSocket } from "ws"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { IWsNotificationEvent } from "@spt-aki/models/eft/ws/IWsNotificationEvent"; -import { IHttpConfig } from "@spt-aki/models/spt/config/IHttpConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { IWebSocketConnectionHandler } from "@spt-aki/servers/ws/IWebSocketConnectionHandler"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { IAkiWebSocketMessageHandler } from "./message/IAkiWebSocketMessageHandler"; -export declare class AkiWebSocketConnectionHandler implements IWebSocketConnectionHandler { +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; +import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { IWebSocketConnectionHandler } from "@spt/servers/ws/IWebSocketConnectionHandler"; +import { ISptWebSocketMessageHandler } from "@spt/servers/ws/message/ISptWebSocketMessageHandler"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { JsonUtil } from "@spt/utils/JsonUtil"; +export declare class SptWebSocketConnectionHandler implements IWebSocketConnectionHandler { protected logger: ILogger; protected profileHelper: ProfileHelper; protected localisationService: LocalisationService; protected configServer: ConfigServer; protected jsonUtil: JsonUtil; - protected akiWebSocketMessageHandlers: IAkiWebSocketMessageHandler[]; + protected sptWebSocketMessageHandlers: ISptWebSocketMessageHandler[]; protected httpConfig: IHttpConfig; protected webSockets: Map; protected defaultNotification: IWsNotificationEvent; - protected websocketPingHandler: any; - constructor(logger: ILogger, profileHelper: ProfileHelper, localisationService: LocalisationService, configServer: ConfigServer, jsonUtil: JsonUtil, akiWebSocketMessageHandlers: IAkiWebSocketMessageHandler[]); + protected websocketPingHandler: NodeJS.Timeout | undefined; + constructor(logger: ILogger, profileHelper: ProfileHelper, localisationService: LocalisationService, configServer: ConfigServer, jsonUtil: JsonUtil, sptWebSocketMessageHandlers: ISptWebSocketMessageHandler[]); getSocketId(): string; getHookUrl(): string; onConnection(ws: WebSocket, req: IncomingMessage): void; diff --git a/TypeScript/23CustomAbstractChatBot/types/servers/ws/message/DefaultSptWebSocketMessageHandler.d.ts b/TypeScript/23CustomAbstractChatBot/types/servers/ws/message/DefaultSptWebSocketMessageHandler.d.ts new file mode 100644 index 0000000..d5247ec --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/servers/ws/message/DefaultSptWebSocketMessageHandler.d.ts @@ -0,0 +1,8 @@ +import { RawData, WebSocket } from "ws"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ISptWebSocketMessageHandler } from "@spt/servers/ws/message/ISptWebSocketMessageHandler"; +export declare class DefaultSptWebSocketMessageHandler implements ISptWebSocketMessageHandler { + protected logger: ILogger; + constructor(logger: ILogger); + onSptMessage(sessionId: string, client: WebSocket, message: RawData): void; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/servers/ws/message/ISptWebSocketMessageHandler.d.ts b/TypeScript/23CustomAbstractChatBot/types/servers/ws/message/ISptWebSocketMessageHandler.d.ts new file mode 100644 index 0000000..137bc87 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/servers/ws/message/ISptWebSocketMessageHandler.d.ts @@ -0,0 +1,4 @@ +import { RawData, WebSocket } from "ws"; +export interface ISptWebSocketMessageHandler { + onSptMessage(sessionID: string, client: WebSocket, message: RawData): void; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/services/BotEquipmentFilterService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/BotEquipmentFilterService.d.ts index f0cc787..780d7a2 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/BotEquipmentFilterService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/BotEquipmentFilterService.d.ts @@ -1,10 +1,10 @@ -import { BotHelper } from "@spt-aki/helpers/BotHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { EquipmentChances, Generation, GenerationData, IBotType, ModsChances } from "@spt-aki/models/eft/common/tables/IBotType"; -import { BotGenerationDetails } from "@spt-aki/models/spt/bots/BotGenerationDetails"; -import { AdjustmentDetails, EquipmentFilterDetails, EquipmentFilters, IBotConfig, WeightingAdjustmentDetails } from "@spt-aki/models/spt/config/IBotConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; +import { BotHelper } from "@spt/helpers/BotHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { EquipmentChances, Generation, GenerationData, IBotType, ModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; +import { EquipmentFilterDetails, EquipmentFilters, IAdjustmentDetails, IBotConfig, WeightingAdjustmentDetails } from "@spt/models/spt/config/IBotConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; export declare class BotEquipmentFilterService { protected logger: ILogger; protected botHelper: BotHelper; @@ -44,35 +44,35 @@ export declare class BotEquipmentFilterService { * @param botEquipmentRole equipment role of bot to look up * @returns Dictionary of weapon type and their whitelisted scope types */ - getBotWeaponSightWhitelist(botEquipmentRole: string): Record; + getBotWeaponSightWhitelist(botEquipmentRole: string): Record | undefined; /** * Get an object that contains equipment and cartridge blacklists for a specified bot type * @param botRole Role of the bot we want the blacklist for * @param playerLevel Level of the player * @returns EquipmentBlacklistDetails object */ - getBotEquipmentBlacklist(botRole: string, playerLevel: number): EquipmentFilterDetails; + getBotEquipmentBlacklist(botRole: string, playerLevel: number): EquipmentFilterDetails | undefined; /** * Get the whitelist for a specific bot type that's within the players level * @param botRole Bot type * @param playerLevel Players level * @returns EquipmentFilterDetails object */ - protected getBotEquipmentWhitelist(botRole: string, playerLevel: number): EquipmentFilterDetails; + protected getBotEquipmentWhitelist(botRole: string, playerLevel: number): EquipmentFilterDetails | undefined; /** * Retrieve item weighting adjustments from bot.json config based on bot level * @param botRole Bot type to get adjustments for * @param botLevel Level of bot * @returns Weighting adjustments for bot items */ - protected getBotWeightingAdjustments(botRole: string, botLevel: number): WeightingAdjustmentDetails; + protected getBotWeightingAdjustments(botRole: string, botLevel: number): WeightingAdjustmentDetails | undefined; /** * Retrieve item weighting adjustments from bot.json config based on player level * @param botRole Bot type to get adjustments for * @param playerlevel Level of bot * @returns Weighting adjustments for bot items */ - protected getBotWeightingAdjustmentsByPlayerLevel(botRole: string, playerlevel: number): WeightingAdjustmentDetails; + protected getBotWeightingAdjustmentsByPlayerLevel(botRole: string, playerlevel: number): WeightingAdjustmentDetails | undefined; /** * Filter bot equipment based on blacklist and whitelist from config/bot.json * Prioritizes whitelist first, if one is found blacklist is ignored @@ -95,5 +95,5 @@ export declare class BotEquipmentFilterService { * @param weightingAdjustments Weighting change to apply to bot * @param botItemPool Bot item dictionary to adjust */ - protected adjustWeighting(weightingAdjustments: AdjustmentDetails, botItemPool: Record, showEditWarnings?: boolean): void; + protected adjustWeighting(weightingAdjustments: IAdjustmentDetails, botItemPool: Record, showEditWarnings?: boolean): void; } diff --git a/TypeScript/23CustomAbstractChatBot/types/services/BotEquipmentModPoolService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/BotEquipmentModPoolService.d.ts index 8cca127..7b2b442 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/BotEquipmentModPoolService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/BotEquipmentModPoolService.d.ts @@ -1,18 +1,18 @@ -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { Mods } from "@spt-aki/models/eft/common/tables/IBotType"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { IBotConfig } from "@spt-aki/models/spt/config/IBotConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { VFS } from "@spt-aki/utils/VFS"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { Mods } from "@spt/models/eft/common/tables/IBotType"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { VFS } from "@spt/utils/VFS"; /** Store a mapping between weapons, their slots and the items that fit those slots */ export declare class BotEquipmentModPoolService { protected logger: ILogger; protected vfs: VFS; protected itemHelper: ItemHelper; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected localisationService: LocalisationService; protected configServer: ConfigServer; protected botConfig: IBotConfig; @@ -20,7 +20,7 @@ export declare class BotEquipmentModPoolService { protected gearModPool: Mods; protected weaponPoolGenerated: boolean; protected armorPoolGenerated: boolean; - constructor(logger: ILogger, vfs: VFS, itemHelper: ItemHelper, databaseServer: DatabaseServer, localisationService: LocalisationService, configServer: ConfigServer); + constructor(logger: ILogger, vfs: VFS, itemHelper: ItemHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer); /** * Store dictionary of mods for each item passed in * @param items items to find related mods and store in modPool diff --git a/TypeScript/23CustomAbstractChatBot/types/services/BotGenerationCacheService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/BotGenerationCacheService.d.ts index fb84ede..ba27266 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/BotGenerationCacheService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/BotGenerationCacheService.d.ts @@ -1,17 +1,16 @@ -import { BotHelper } from "@spt-aki/helpers/BotHelper"; -import { IBotBase } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { BotHelper } from "@spt/helpers/BotHelper"; +import { IBotBase } from "@spt/models/eft/common/tables/IBotBase"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class BotGenerationCacheService { protected logger: ILogger; protected randomUtil: RandomUtil; - protected jsonUtil: JsonUtil; protected localisationService: LocalisationService; protected botHelper: BotHelper; protected storedBots: Map; - constructor(logger: ILogger, randomUtil: RandomUtil, jsonUtil: JsonUtil, localisationService: LocalisationService, botHelper: BotHelper); + protected activeBotsInRaid: IBotBase[]; + constructor(logger: ILogger, randomUtil: RandomUtil, localisationService: LocalisationService, botHelper: BotHelper); /** * Store array of bots in cache, shuffle results before storage * @param botsToStore Bots we want to store in the cache @@ -24,6 +23,18 @@ export declare class BotGenerationCacheService { * @returns IBotBase object */ getBot(key: string): IBotBase; + /** + * Cache a bot that has been sent to the client in memory for later use post-raid to determine if player killed a traitor scav + * @param botToStore Bot object to store + */ + storeUsedBot(botToStore: IBotBase): void; + /** + * Get a bot by its profileId that has been generated and sent to client for current raid + * Cache is wiped post-raid in client/match/offline/end endOfflineRaid() + * @param profileId Id of bot to get + * @returns IBotBase + */ + getUsedBot(profileId: string): IBotBase; /** * Remove all cached bot profiles from memory */ diff --git a/TypeScript/23CustomAbstractChatBot/types/services/BotLootCacheService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/BotLootCacheService.d.ts index a2205f3..2b51c5b 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/BotLootCacheService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/BotLootCacheService.d.ts @@ -1,23 +1,23 @@ -import { PMCLootGenerator } from "@spt-aki/generators/PMCLootGenerator"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { IBotType } from "@spt-aki/models/eft/common/tables/IBotType"; -import { ITemplateItem, Props } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { IBotLootCache, LootCacheType } from "@spt-aki/models/spt/bots/IBotLootCache"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { RagfairPriceService } from "@spt-aki/services/RagfairPriceService"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; +import { PMCLootGenerator } from "@spt/generators/PMCLootGenerator"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { IBotType } from "@spt/models/eft/common/tables/IBotType"; +import { ITemplateItem, Props } from "@spt/models/eft/common/tables/ITemplateItem"; +import { IBotLootCache, LootCacheType } from "@spt/models/spt/bots/IBotLootCache"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { RagfairPriceService } from "@spt/services/RagfairPriceService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class BotLootCacheService { protected logger: ILogger; - protected jsonUtil: JsonUtil; protected itemHelper: ItemHelper; protected databaseServer: DatabaseServer; protected pmcLootGenerator: PMCLootGenerator; protected localisationService: LocalisationService; protected ragfairPriceService: RagfairPriceService; + protected cloner: ICloner; protected lootCache: Record; - constructor(logger: ILogger, jsonUtil: JsonUtil, itemHelper: ItemHelper, databaseServer: DatabaseServer, pmcLootGenerator: PMCLootGenerator, localisationService: LocalisationService, ragfairPriceService: RagfairPriceService); + constructor(logger: ILogger, itemHelper: ItemHelper, databaseServer: DatabaseServer, pmcLootGenerator: PMCLootGenerator, localisationService: LocalisationService, ragfairPriceService: RagfairPriceService, cloner: ICloner); /** * Remove cached bot loot data */ @@ -30,7 +30,7 @@ export declare class BotLootCacheService { * @param botJsonTemplate Base json db file for the bot having its loot generated * @returns ITemplateItem array */ - getLootFromCache(botRole: string, isPmc: boolean, lootType: LootCacheType, botJsonTemplate: IBotType): ITemplateItem[]; + getLootFromCache(botRole: string, isPmc: boolean, lootType: LootCacheType, botJsonTemplate: IBotType): Record; /** * Generate loot for a bot and store inside a private class property * @param botRole bots role (assault / pmcBot etc) @@ -38,17 +38,13 @@ export declare class BotLootCacheService { * @param botJsonTemplate db template for bot having its loot generated */ protected addLootToCache(botRole: string, isPmc: boolean, botJsonTemplate: IBotType): void; - /** - * Sort a pool of item objects by its flea price - * @param poolToSort pool of items to sort - */ - protected sortPoolByRagfairPrice(poolToSort: ITemplateItem[]): void; /** * Add unique items into combined pool - * @param combinedItemPool Pool of items to add to + * @param poolToAddTo Pool of items to add to * @param itemsToAdd items to add to combined pool if unique */ - protected addUniqueItemsToPool(combinedItemPool: ITemplateItem[], itemsToAdd: ITemplateItem[]): void; + protected addUniqueItemsToPool(poolToAddTo: ITemplateItem[], itemsToAdd: ITemplateItem[]): void; + protected addItemsToPool(poolToAddTo: Record, poolOfItemsToAdd: Record): void; /** * Ammo/grenades have this property * @param props @@ -73,6 +69,9 @@ export declare class BotLootCacheService { * @returns */ protected isGrenade(props: Props): boolean; + protected isFood(tpl: string): boolean; + protected isDrink(tpl: string): boolean; + protected isCurrency(tpl: string): boolean; /** * Check if a bot type exists inside the loot cache * @param botRole role to check for @@ -80,7 +79,7 @@ export declare class BotLootCacheService { */ protected botRoleExistsInCache(botRole: string): boolean; /** - * If lootcache is null, init with empty property arrays + * If lootcache is undefined, init with empty property arrays * @param botRole Bot role to hydrate */ protected initCacheForBotRole(botRole: string): void; diff --git a/TypeScript/23CustomAbstractChatBot/types/services/BotWeaponModLimitService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/BotWeaponModLimitService.d.ts index cf530a9..63c4967 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/BotWeaponModLimitService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/BotWeaponModLimitService.d.ts @@ -1,9 +1,9 @@ -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { IBotConfig } from "@spt-aki/models/spt/config/IBotConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; export declare class BotModLimits { scope: ItemCount; scopeMax: number; diff --git a/TypeScript/23CustomAbstractChatBot/types/services/CustomLocationWaveService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/CustomLocationWaveService.d.ts index f32c082..c72d5bb 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/CustomLocationWaveService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/CustomLocationWaveService.d.ts @@ -1,18 +1,16 @@ -import { BossLocationSpawn, Wave } from "@spt-aki/models/eft/common/ILocationBase"; -import { ILocationConfig } from "@spt-aki/models/spt/config/ILocationConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class CustomLocationWaveService { protected logger: ILogger; protected randomUtil: RandomUtil; - protected jsonUtil: JsonUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected configServer: ConfigServer; protected locationConfig: ILocationConfig; - constructor(logger: ILogger, randomUtil: RandomUtil, jsonUtil: JsonUtil, databaseServer: DatabaseServer, configServer: ConfigServer); + constructor(logger: ILogger, randomUtil: RandomUtil, databaseService: DatabaseService, configServer: ConfigServer); /** * Add a boss wave to a map * @param locationId e.g. factory4_day, bigmap diff --git a/TypeScript/23CustomAbstractChatBot/types/services/DatabaseService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/DatabaseService.d.ts new file mode 100644 index 0000000..711a069 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/services/DatabaseService.d.ts @@ -0,0 +1,113 @@ +import { IGlobals } from "@spt/models/eft/common/IGlobals"; +import { ILocation } from "@spt/models/eft/common/ILocation"; +import { IAchievement } from "@spt/models/eft/common/tables/IAchievement"; +import { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomizationItem"; +import { IHandbookBase } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IMatch } from "@spt/models/eft/common/tables/IMatch"; +import { IProfileTemplates } from "@spt/models/eft/common/tables/IProfileTemplate"; +import { IQuest } from "@spt/models/eft/common/tables/IQuest"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { ITrader } from "@spt/models/eft/common/tables/ITrader"; +import { IBots } from "@spt/models/spt/bots/IBots"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { IHideout } from "@spt/models/spt/hideout/IHideout"; +import { IDatabaseTables } from "@spt/models/spt/server/IDatabaseTables"; +import { ILocaleBase } from "@spt/models/spt/server/ILocaleBase"; +import { ILocations } from "@spt/models/spt/server/ILocations"; +import { IServerBase } from "@spt/models/spt/server/IServerBase"; +import { ISettingsBase } from "@spt/models/spt/server/ISettingsBase"; +import { ITemplates } from "@spt/models/spt/templates/ITemplates"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; +export declare class DatabaseService { + protected logger: ILogger; + protected databaseServer: DatabaseServer; + protected localisationService: LocalisationService; + protected locationConfig: ILocationConfig; + constructor(logger: ILogger, databaseServer: DatabaseServer, localisationService: LocalisationService); + /** + * @returns assets/database/ + */ + getTables(): IDatabaseTables; + /** + * @returns assets/database/bots/ + */ + getBots(): IBots; + /** + * @returns assets/database/globals.json + */ + getGlobals(): IGlobals; + /** + * @returns assets/database/hideout/ + */ + getHideout(): IHideout; + /** + * @returns assets/database/locales/ + */ + getLocales(): ILocaleBase; + /** + * @returns assets/database/locations + */ + getLocations(): ILocations; + /** + * Get specific location by its Id + * @param locationId Desired location id + * @returns assets/database/locations/ + */ + getLocation(locationId: string): ILocation; + /** + * @returns assets/database/match/ + */ + getMatch(): IMatch; + /** + * @returns assets/database/server.json + */ + getServer(): IServerBase; + /** + * @returns assets/database/settings.json + */ + getSettings(): ISettingsBase; + /** + * @returns assets/database/templates/ + */ + getTemplates(): ITemplates; + /** + * @returns assets/database/templates/achievements.json + */ + getAchievements(): IAchievement[]; + /** + * @returns assets/database/templates/customisation.json + */ + getCustomization(): Record; + /** + * @returns assets/database/templates/items.json + */ + getHandbook(): IHandbookBase; + /** + * @returns assets/database/templates/items.json + */ + getItems(): Record; + /** + * @returns assets/database/templates/prices.json + */ + getPrices(): Record; + /** + * @returns assets/database/templates/profiles.json + */ + getProfiles(): IProfileTemplates; + /** + * @returns assets/database/templates/items.json + */ + getQuests(): Record; + /** + * @returns assets/database/traders/ + */ + getTraders(): Record; + /** + * Get specific trader by their Id + * @param traderId Desired trader id + * @returns assets/database/traders/ + */ + getTrader(traderId: string): ITrader; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/services/FenceService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/FenceService.d.ts index 63cd726..c156122 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/FenceService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/FenceService.d.ts @@ -1,55 +1,72 @@ -import { HandbookHelper } from "@spt-aki/helpers/HandbookHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PresetHelper } from "@spt-aki/helpers/PresetHelper"; -import { IFenceLevel, IPreset } from "@spt-aki/models/eft/common/IGlobals"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { ITraderAssort } from "@spt-aki/models/eft/common/tables/ITrader"; -import { ITraderConfig } from "@spt-aki/models/spt/config/ITraderConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { ItemFilterService } from "@spt-aki/services/ItemFilterService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { HandbookHelper } from "@spt/helpers/HandbookHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { IFenceLevel } from "@spt/models/eft/common/IGlobals"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Item, Repairable } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem, Slot } from "@spt/models/eft/common/tables/ITemplateItem"; +import { IBarterScheme, ITraderAssort } from "@spt/models/eft/common/tables/ITrader"; +import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; +import { ICreateFenceAssortsResult } from "@spt/models/spt/fence/ICreateFenceAssortsResult"; +import { IFenceAssortGenerationValues, IGenerationAssortValues } from "@spt/models/spt/fence/IFenceAssortGenerationValues"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; /** * Handle actions surrounding Fence * e.g. generating or refreshing assorts / get next refresh time */ export declare class FenceService { protected logger: ILogger; - protected hashUtil: HashUtil; - protected jsonUtil: JsonUtil; protected timeUtil: TimeUtil; protected randomUtil: RandomUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected handbookHelper: HandbookHelper; protected itemHelper: ItemHelper; protected presetHelper: PresetHelper; - protected itemFilterService: ItemFilterService; protected localisationService: LocalisationService; protected configServer: ConfigServer; - /** Main assorts you see at all rep levels */ - protected fenceAssort: ITraderAssort; - /** Assorts shown on a separte tab when you max out fence rep */ - protected fenceDiscountAssort: ITraderAssort; + protected cloner: ICloner; protected traderConfig: ITraderConfig; - protected nextMiniRefreshTimestamp: number; - constructor(logger: ILogger, hashUtil: HashUtil, jsonUtil: JsonUtil, timeUtil: TimeUtil, randomUtil: RandomUtil, databaseServer: DatabaseServer, handbookHelper: HandbookHelper, itemHelper: ItemHelper, presetHelper: PresetHelper, itemFilterService: ItemFilterService, localisationService: LocalisationService, configServer: ConfigServer); + /** Time when some items in assort will be replaced */ + protected nextPartialRefreshTimestamp: number; + /** Main assorts you see at all rep levels */ + protected fenceAssort?: ITraderAssort; + /** Assorts shown on a separate tab when you max out fence rep */ + protected fenceDiscountAssort?: ITraderAssort; + /** Desired baseline counts - Hydrated on initial assort generation as part of generateFenceAssorts() */ + protected desiredAssortCounts: IFenceAssortGenerationValues; + protected fenceItemUpdCompareProperties: Set; + constructor(logger: ILogger, timeUtil: TimeUtil, randomUtil: RandomUtil, databaseService: DatabaseService, handbookHelper: HandbookHelper, itemHelper: ItemHelper, presetHelper: PresetHelper, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); /** * Replace main fence assort with new assort * @param assort New assorts to replace old with */ setFenceAssort(assort: ITraderAssort): void; /** - * Replace high rep level fence assort with new assort + * Replace discount fence assort with new assort * @param assort New assorts to replace old with */ - setFenceDiscountAssort(assort: ITraderAssort): void; + setDiscountFenceAssort(assort: ITraderAssort): void; + /** + * Get main fence assort + * @return ITraderAssort + */ + getMainFenceAssort(): ITraderAssort | undefined; + /** + * Get discount fence assort + * @return ITraderAssort + */ + getDiscountFenceAssort(): ITraderAssort | undefined; + /** + * Replace high rep level fence assort with new assort + * @param discountAssort New assorts to replace old with + */ + setFenceDiscountAssort(discountAssort: ITraderAssort): void; /** * Get assorts player can purchase * Adjust prices based on fence level of player @@ -57,13 +74,33 @@ export declare class FenceService { * @returns ITraderAssort */ getFenceAssorts(pmcProfile: IPmcData): ITraderAssort; + /** + * Adds to fence assort a single item (with its children) + * @param items the items to add with all its childrens + * @param mainItem the most parent item of the array + */ + addItemsToFenceAssort(items: Item[], mainItem: Item): void; + /** + * Calculates the overall price for an item (with all its children) + * @param itemTpl the item tpl to calculate the fence price for + * @param items the items (with its children) to calculate fence price for + * @returns the fence price of the item + */ + getItemPrice(itemTpl: string, items: Item[]): number; + /** + * 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 + * @param items the ammo box (and all its children ammo items) + * @returns the price of the ammo box + */ + protected getAmmoBoxPrice(items: Item[]): number; /** * Adjust all items contained inside an assort by a multiplier - * @param assort Assort that contains items with prices to adjust + * @param assort (clone)Assort that contains items with prices to adjust * @param itemMultipler multipler to use on items * @param presetMultiplier preset multipler to use on presets */ - protected adjustAssortItemPrices(assort: ITraderAssort, itemMultipler: number, presetMultiplier: number): void; + protected adjustAssortItemPricesByConfigMultiplier(assort: ITraderAssort, itemMultipler: number, presetMultiplier: number): void; /** * Merge two trader assort files together * @param firstAssort assort 1# @@ -93,22 +130,35 @@ export declare class FenceService { * Replace a percentage of fence assorts with freshly generated items */ performPartialRefresh(): void; + /** + * Handle the process of folding new assorts into existing assorts, when a new assort exists already, increment its StackObjectsCount instead + * @param newFenceAssorts Assorts to fold into existing fence assorts + * @param existingFenceAssorts Current fence assorts new assorts will be added to + */ + protected updateFenceAssorts(newFenceAssorts: ICreateFenceAssortsResult, existingFenceAssorts: ITraderAssort): void; /** * Increment fence next refresh timestamp by current timestamp + partialRefreshTimeSeconds from config */ protected incrementPartialRefreshTime(): void; /** - * Compare the current fence offer count to what the config wants it to be, - * If value is lower add extra count to value to generate more items to fill gap - * @param existingItemCountToReplace count of items to generate - * @returns number of items to generate + * Get values that will hydrate the passed in assorts back to the desired counts + * @param assortItems Current assorts after items have been removed + * @param generationValues Base counts assorts should be adjusted to + * @returns IGenerationAssortValues object with adjustments needed to reach desired state */ - protected getCountOfItemsToGenerate(existingItemCountToReplace: number): number; + protected getItemCountsToGenerate(assortItems: Item[], generationValues: IGenerationAssortValues): IGenerationAssortValues; /** - * Choose an item (not mod) at random and remove from assorts - * @param assort Items to remove from + * Delete desired number of items from assort (including children) + * @param itemCountToReplace + * @param discountItemCountToReplace */ - protected removeRandomItemFromAssorts(assort: ITraderAssort): void; + protected deleteRandomAssorts(itemCountToReplace: number, assort: ITraderAssort): void; + /** + * Choose an item at random and remove it + mods from assorts + * @param assort Trader assort to remove item from + * @param rootItems Pool of root items to pick from to remove + */ + protected removeRandomItemFromAssorts(assort: ITraderAssort, rootItems: Item[]): void; /** * Get an integer rounded count of items to replace based on percentrage from traderConfig value * @param totalItemCount total item count @@ -122,42 +172,112 @@ export declare class FenceService { getOfferCount(): number; /** * Create trader assorts for fence and store in fenceService cache + * Uses fence base cache generatedon server start as a base */ generateFenceAssorts(): void; + /** + * Convert the intermediary assort data generated into format client can process + * @param intermediaryAssorts Generated assorts that will be converted + * @returns ITraderAssort + */ + protected convertIntoFenceAssort(intermediaryAssorts: ICreateFenceAssortsResult): ITraderAssort; + /** + * Create object that contains calculated fence assort item values to make based on config + * Stored in this.desiredAssortCounts + */ + protected createInitialFenceAssortGenerationValues(): void; /** * Create skeleton to hold assort items * @returns ITraderAssort object */ - protected createBaseTraderAssortItem(): ITraderAssort; + protected createFenceAssortSkeleton(): ITraderAssort; /** * Hydrate assorts parameter object with generated assorts * @param assortCount Number of assorts to generate * @param assorts object to add created assorts to */ - protected createAssorts(assortCount: number, assorts: ITraderAssort, loyaltyLevel: number): void; - protected addItemAssorts(assortCount: number, fenceAssortIds: string[], assorts: ITraderAssort, fenceAssort: ITraderAssort, itemTypeCounts: Record, loyaltyLevel: number): void; + /** + * Find an assort item that matches the first parameter, also matches based on upd properties + * e.g. salewa hp resource units left + * @param rootItemBeingAdded item to look for a match against + * @param itemDbDetails Db details of matching item + * @param itemsWithChildren Items to search through + * @returns Matching assort item + */ + protected getMatchingItem(rootItemBeingAdded: Item, itemDbDetails: ITemplateItem, itemsWithChildren: Item[][]): Item | undefined; + /** + * Should this item be forced into only 1 stack on fence + * @param existingItem Existing item from fence assort + * @param itemDbDetails Item we want to add db details + * @returns True item should be force stacked + */ + protected itemShouldBeForceStacked(existingItem: Item, itemDbDetails: ITemplateItem): boolean; + protected itemInPreventDupeCategoryList(tpl: string): boolean; + /** + * Adjust price of item based on what is left to buy (resource/uses left) + * @param barterSchemes All barter scheme for item having price adjusted + * @param itemRoot Root item having price adjusted + * @param itemTemplate Db template of item + */ + protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: Item, itemTemplate: ITemplateItem): void; + protected getMatchingItemLimit(itemTypeLimits: Record, itemTpl: string): { + current: number; + max: number; + } | undefined; + /** + * Find presets in base fence assort and add desired number to 'assorts' parameter + * @param desiredWeaponPresetsCount + * @param assorts Assorts to add preset to + * @param baseFenceAssort Base data to draw from + * @param loyaltyLevel Which loyalty level is required to see/buy item + */ + protected addPresetsToAssort(desiredWeaponPresetsCount: number, desiredEquipmentPresetsCount: number, assorts: ICreateFenceAssortsResult, baseFenceAssort: ITraderAssort, loyaltyLevel: number): void; + /** + * Adjust plate / soft insert durability values + * @param armor Armor item array to add mods into + * @param itemDbDetails Armor items db template + */ + protected randomiseArmorModDurability(armor: Item[], itemDbDetails: ITemplateItem): void; + /** + * Randomise the durability values of items on armor with a passed in slot + * @param softInsertSlots Slots of items to randomise + * @param armorItemAndMods Array of armor + inserts to get items from + */ + protected randomiseArmorSoftInsertDurabilities(softInsertSlots: Slot[], armorItemAndMods: Item[]): void; + /** + * Randomise the durability values of plate items in armor + * Has chance to remove plate + * @param plateSlots Slots of items to randomise + * @param armorItemAndMods Array of armor + inserts to get items from + */ + protected randomiseArmorInsertsDurabilities(plateSlots: Slot[], armorItemAndMods: Item[]): void; /** * Get stack size of a singular item (no mods) * @param itemDbDetails item being added to fence * @returns Stack size */ protected getSingleItemStackCount(itemDbDetails: ITemplateItem): number; - /** - * Add preset weapons to fence presets - * @param assortCount how many assorts to add to assorts - * @param defaultWeaponPresets a dictionary of default weapon presets - * @param assorts object to add presets to - * @param loyaltyLevel loyalty level to requre item at - */ - protected addPresets(desiredPresetCount: number, defaultWeaponPresets: Record, assorts: ITraderAssort, loyaltyLevel: number): void; /** * Remove parts of a weapon prior to being listed on flea - * @param weaponAndMods Weapon to remove parts from + * @param itemAndMods Weapon to remove parts from */ - protected removeRandomPartsOfWeapon(weaponAndMods: Item[]): void; + protected removeRandomModsOfItem(itemAndMods: Item[]): void; /** * Roll % chance check to see if item should be removed * @param weaponMod Weapon mod being checked @@ -171,6 +291,13 @@ export declare class FenceService { * @param itemToAdjust Item being edited */ protected randomiseItemUpdProperties(itemDetails: ITemplateItem, itemToAdjust: Item): void; + /** + * Generate a randomised current and max durabiltiy value for an armor item + * @param itemDetails Item to create values for + * @param equipmentDurabilityLimits Max durabiltiy percent min/max values + * @returns Durability + MaxDurability values + */ + protected getRandomisedArmorDurabilityValues(itemDetails: ITemplateItem, equipmentDurabilityLimits: IItemDurabilityCurrentMax): Repairable; /** * Construct item limit record to hold max and current item count * @param limits limits as defined in config @@ -187,6 +314,7 @@ export declare class FenceService { getNextFenceUpdateTimestamp(): number; /** * Get fence refresh time in seconds + * @returns Refresh time in seconds */ protected getFenceRefreshTime(): number; /** @@ -196,8 +324,10 @@ export declare class FenceService { */ getFenceInfo(pmcData: IPmcData): IFenceLevel; /** - * Remove an assort from fence by id - * @param assortIdToRemove assort id to remove from fence assorts + * Remove or lower stack size of an assort from fence by id + * @param assortId assort id to adjust + * @param buyCount Count of items bought */ - removeFenceOffer(assortIdToRemove: string): void; + amendOrRemoveFenceOffer(assortId: string, buyCount: number): void; + protected deleteOffer(assortId: string, assorts: Item[]): void; } diff --git a/TypeScript/23CustomAbstractChatBot/types/services/GiftService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/GiftService.d.ts index 2dbf09a..261b475 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/GiftService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/GiftService.d.ts @@ -1,27 +1,40 @@ -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { GiftSentResult } from "@spt-aki/models/enums/GiftSentResult"; -import { MessageType } from "@spt-aki/models/enums/MessageType"; -import { Gift, IGiftsConfig } from "@spt-aki/models/spt/config/IGiftsConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { MailSendService } from "@spt-aki/services/MailSendService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { GiftSentResult } from "@spt/models/enums/GiftSentResult"; +import { MessageType } from "@spt/models/enums/MessageType"; +import { Gift, IGiftsConfig } from "@spt/models/spt/config/IGiftsConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { MailSendService } from "@spt/services/MailSendService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class GiftService { protected logger: ILogger; protected mailSendService: MailSendService; + protected localisationService: LocalisationService; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected profileHelper: ProfileHelper; protected configServer: ConfigServer; protected giftConfig: IGiftsConfig; - constructor(logger: ILogger, mailSendService: MailSendService, hashUtil: HashUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, configServer: ConfigServer); + constructor(logger: ILogger, mailSendService: MailSendService, localisationService: LocalisationService, hashUtil: HashUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, configServer: ConfigServer); /** * Does a gift with a specific ID exist in db * @param giftId Gift id to check for * @returns True if it exists in db */ giftExists(giftId: string): boolean; + getGiftById(giftId: string): Gift; + /** + * Get dictionary of all gifts + * @returns Dict keyed by gift id + */ + getGifts(): Record; + /** + * Get an array of all gift ids + * @returns string array of gift ids + */ + getGiftIds(): string[]; /** * Send player a gift from a range of sources * @param playerId Player to send gift to / sessionId @@ -34,13 +47,13 @@ export declare class GiftService { * @param giftData Gift to send player * @returns trader/user/system id */ - protected getSenderId(giftData: Gift): string; + protected getSenderId(giftData: Gift): string | undefined; /** * Convert GiftSenderType into a dialog MessageType * @param giftData Gift to send player * @returns MessageType enum value */ - protected getMessageType(giftData: Gift): MessageType; + protected getMessageType(giftData: Gift): MessageType | undefined; /** * Prapor sends gifts to player for first week after profile creation * @param sessionId Player id diff --git a/TypeScript/23CustomAbstractChatBot/types/services/HashCacheService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/HashCacheService.d.ts deleted file mode 100644 index 0097c96..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/services/HashCacheService.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { VFS } from "@spt-aki/utils/VFS"; -export declare class HashCacheService { - protected vfs: VFS; - protected hashUtil: HashUtil; - protected jsonUtil: JsonUtil; - protected logger: ILogger; - protected jsonHashes: any; - protected modHashes: any; - protected readonly modCachePath = "./user/cache/modCache.json"; - constructor(vfs: VFS, hashUtil: HashUtil, jsonUtil: JsonUtil, logger: ILogger); - /** - * Return a stored hash by key - * @param modName Name of mod to get hash for - * @returns Mod hash - */ - getStoredModHash(modName: string): string; - /** - * Does the generated hash match the stored hash - * @param modName name of mod - * @param modContent - * @returns True if they match - */ - modContentMatchesStoredHash(modName: string, modContent: string): boolean; - hashMatchesStoredHash(modName: string, modHash: string): boolean; - storeModContent(modName: string, modContent: string): void; - storeModHash(modName: string, modHash: string): void; -} diff --git a/TypeScript/23CustomAbstractChatBot/types/services/InsuranceService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/InsuranceService.d.ts index fa13e9c..0000e66 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/InsuranceService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/InsuranceService.d.ts @@ -1,31 +1,34 @@ -import { DialogueHelper } from "@spt-aki/helpers/DialogueHelper"; -import { HandbookHelper } from "@spt-aki/helpers/HandbookHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { SecureContainerHelper } from "@spt-aki/helpers/SecureContainerHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITraderBase } from "@spt-aki/models/eft/common/tables/ITrader"; -import { IInsuredItemsData } from "@spt-aki/models/eft/inRaid/IInsuredItemsData"; -import { ISaveProgressRequestData } from "@spt-aki/models/eft/inRaid/ISaveProgressRequestData"; -import { IInsuranceConfig } from "@spt-aki/models/spt/config/IInsuranceConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { LocaleService } from "@spt-aki/services/LocaleService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { MailSendService } from "@spt-aki/services/MailSendService"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { DialogueHelper } from "@spt/helpers/DialogueHelper"; +import { HandbookHelper } from "@spt/helpers/HandbookHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { SecureContainerHelper } from "@spt/helpers/SecureContainerHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITraderBase } from "@spt/models/eft/common/tables/ITrader"; +import { IInsuredItemsData } from "@spt/models/eft/inRaid/IInsuredItemsData"; +import { ISaveProgressRequestData } from "@spt/models/eft/inRaid/ISaveProgressRequestData"; +import { IInsuranceConfig } from "@spt/models/spt/config/IInsuranceConfig"; +import { ILostOnDeathConfig } from "@spt/models/spt/config/ILostOnDeathConfig"; +import { IInsuranceEquipmentPkg } from "@spt/models/spt/services/IInsuranceEquipmentPkg"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocaleService } from "@spt/services/LocaleService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { MailSendService } from "@spt/services/MailSendService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class InsuranceService { protected logger: ILogger; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected secureContainerHelper: SecureContainerHelper; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; - protected jsonUtil: JsonUtil; + protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected saveServer: SaveServer; protected traderHelper: TraderHelper; @@ -35,9 +38,11 @@ export declare class InsuranceService { protected localeService: LocaleService; protected mailSendService: MailSendService; protected configServer: ConfigServer; + protected cloner: ICloner; protected insured: Record>; protected insuranceConfig: IInsuranceConfig; - constructor(logger: ILogger, databaseServer: DatabaseServer, secureContainerHelper: SecureContainerHelper, randomUtil: RandomUtil, itemHelper: ItemHelper, jsonUtil: JsonUtil, timeUtil: TimeUtil, saveServer: SaveServer, traderHelper: TraderHelper, dialogueHelper: DialogueHelper, handbookHelper: HandbookHelper, localisationService: LocalisationService, localeService: LocaleService, mailSendService: MailSendService, configServer: ConfigServer); + protected lostOnDeathConfig: ILostOnDeathConfig; + constructor(logger: ILogger, databaseService: DatabaseService, secureContainerHelper: SecureContainerHelper, randomUtil: RandomUtil, itemHelper: ItemHelper, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, traderHelper: TraderHelper, dialogueHelper: DialogueHelper, handbookHelper: HandbookHelper, localisationService: LocalisationService, localeService: LocaleService, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); /** * Does player have insurance array * @param sessionId Player id @@ -65,12 +70,6 @@ export declare class InsuranceService { * @param mapId Id of the map player died/exited that caused the insurance to be issued on */ sendInsuredItems(pmcData: IPmcData, sessionID: string, mapId: string): void; - /** - * Send a message to player informing them gear was lost - * @param sessionId Session id - * @param locationName name of map insurance was lost on - */ - sendLostInsuranceMessage(sessionId: string, locationName?: string): void; /** * Check all root insured items and remove location property + set slotId to 'hideout' * @param sessionId Session id @@ -86,21 +85,41 @@ export declare class InsuranceService { */ protected getInsuranceReturnTimestamp(pmcData: IPmcData, trader: ITraderBase): number; /** - * Store lost gear post-raid inside profile, ready for later code to pick it up and mail it - * @param pmcData player profile to store gear in - * @param offraidData post-raid request object - * @param preRaidGear gear player wore prior to raid + * Create insurance equipment packages that should be sent to the user. The packages should contain items that have + * been lost in a raid and should be returned to the player through the insurance system. + * + * NOTE: We do not have data on items that were dropped in a raid. This means we have to pull item data from the + * profile at the start of the raid to return to the player in insurance. Because of this, the item + * positioning may differ from the position the item was in when the player died. Apart from removing all + * positioning, this is the best we can do. >:{} + * + * @param pmcData Player profile + * @param offraidData Post-raid data + * @param preRaidGear Pre-raid data * @param sessionID Session id - * @param playerDied did the player die in raid + * @param playerDied Did player die in raid + * @returns Array of insured items lost in raid */ - storeLostGear(pmcData: IPmcData, offraidData: ISaveProgressRequestData, preRaidGear: Item[], sessionID: string, playerDied: boolean): void; + getGearLostInRaid(pmcData: IPmcData, offraidData: ISaveProgressRequestData, preRaidGear: Item[], sessionID: string, playerDied: boolean): IInsuranceEquipmentPkg[]; + /** + * Take the insurance item packages within a profile session and ensure that each of the items in that package are + * not orphaned from their parent ID. + * + * @param sessionID The session ID to update insurance equipment packages in. + * @returns void + */ + protected adoptOrphanedInsEquipment(sessionID: string): void; + /** + * Store lost gear post-raid inside profile, ready for later code to pick it up and mail it + * @param equipmentPkg Gear to store - generated by getGearLostInRaid() + */ + storeGearLostInRaidToSendLater(sessionID: string, equipmentPkg: IInsuranceEquipmentPkg[]): void; /** * Take preraid item and update properties to ensure its ready to be given to player in insurance return mail * @param pmcData Player profile - * @param insuredItem Insured items properties - * @param preRaidItem Insured item as it was pre-raid - * @param insuredItemFromClient Item data when player left raid (durability values) - * @returns Item object + * @param preRaidItemWithChildren Insured item (with children) as it was pre-raid + * @param allItemsFromClient Item data when player left raid (durability values) + * @returns Item (with children) to send to player */ protected getInsuredItemDetails(pmcData: IPmcData, preRaidItem: Item, insuredItemFromClient: IInsuredItemsData): Item; /** @@ -109,12 +128,6 @@ export declare class InsuranceService { * @param itemToReturn item we will send to player as insurance return */ protected updateSlotIdValue(playerBaseInventoryEquipmentId: string, itemToReturn: Item): void; - /** - * Create a hash table for an array of items, keyed by items _id - * @param items Items to hash - * @returns Hashtable - */ - protected createItemHashTable(items: Item[]): Record; /** * Add gear item to InsuredItems array in player profile * @param sessionID Session id @@ -122,12 +135,7 @@ export declare class InsuranceService { * @param itemToReturnToPlayer item to store * @param traderId Id of trader item was insured with */ - protected addGearToSend(gear: { - sessionID: string; - pmcData: IPmcData; - itemToReturnToPlayer: Item; - traderId: string; - }): void; + protected addGearToSend(gear: IInsuranceEquipmentPkg): void; /** * Does insurance exist for a player and by trader * @param sessionId Player id (session id) @@ -145,7 +153,7 @@ export declare class InsuranceService { * Store insured item * @param sessionId Player id (session id) * @param traderId Trader item insured with - * @param itemToAdd Insured item + * @param itemToAdd Insured item (with children) */ addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: Item): void; /** @@ -155,5 +163,11 @@ export declare class InsuranceService { * @param traderId Trader item is insured with * @returns price in roubles */ - getPremium(pmcData: IPmcData, inventoryItem: Item, traderId: string): number; + getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: Item, traderId: string): number; + /** + * Returns the ID that should be used for a root-level Item's parentId property value within in the context of insurance. + * @param sessionID Players id + * @returns The root item Id. + */ + getRootItemParentID(sessionID: string): string; } diff --git a/TypeScript/23CustomAbstractChatBot/types/services/ItemBaseClassService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/ItemBaseClassService.d.ts index 83994ad..a7d986b 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/ItemBaseClassService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/ItemBaseClassService.d.ts @@ -1,17 +1,18 @@ -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; /** * Cache the baseids for each item in the tiems db inside a dictionary */ export declare class ItemBaseClassService { protected logger: ILogger; protected localisationService: LocalisationService; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected itemBaseClassesCache: Record; + protected items: Record; protected cacheGenerated: boolean; - constructor(logger: ILogger, localisationService: LocalisationService, databaseServer: DatabaseServer); + constructor(logger: ILogger, localisationService: LocalisationService, databaseService: DatabaseService); /** * Create cache and store inside ItemBaseClassService * Store a dict of an items tpl to the base classes it and its parents have @@ -21,9 +22,8 @@ export declare class ItemBaseClassService { * Helper method, recursivly iterate through items parent items, finding and adding ids to dictionary * @param itemIdToUpdate item tpl to store base ids against in dictionary * @param item item being checked - * @param allDbItems all items in db */ - protected addBaseItems(itemIdToUpdate: string, item: ITemplateItem, allDbItems: Record): void; + protected addBaseItems(itemIdToUpdate: string, item: ITemplateItem): void; /** * Does item tpl inherit from the requested base class * @param itemTpl item to check base classes of @@ -31,6 +31,12 @@ export declare class ItemBaseClassService { * @returns true if item inherits from base class passed in */ itemHasBaseClass(itemTpl: string, baseClasses: string[]): boolean; + /** + * Check if cached item template is of type Item + * @param itemTemplateId item to check + * @returns true if item is of type Item + */ + private cachedItemIsOfItemType; /** * Get base classes item inherits from * @param itemTpl item to get base classes for diff --git a/TypeScript/23CustomAbstractChatBot/types/services/ItemFilterService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/ItemFilterService.d.ts index 791bb34..7ff6532 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/ItemFilterService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/ItemFilterService.d.ts @@ -1,25 +1,51 @@ -import { IItemConfig } from "@spt-aki/models/spt/config/IItemConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; +import { IItemConfig } from "@spt/models/spt/config/IItemConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { ICloner } from "@spt/utils/cloners/ICloner"; /** Centralise the handling of blacklisting items, uses blacklist found in config/item.json, stores items that should not be used by players / broken items */ export declare class ItemFilterService { protected logger: ILogger; + protected cloner: ICloner; protected databaseServer: DatabaseServer; protected configServer: ConfigServer; protected itemConfig: IItemConfig; - constructor(logger: ILogger, databaseServer: DatabaseServer, configServer: ConfigServer); + protected itemBlacklistCache: Set; + protected lootableItemBlacklistCache: Set; + constructor(logger: ILogger, cloner: ICloner, databaseServer: DatabaseServer, configServer: ConfigServer); /** - * Check if the provided template id is blacklisted in config/item.json + * Check if the provided template id is blacklisted in config/item.json/blacklist * @param tpl template id * @returns true if blacklisted */ isItemBlacklisted(tpl: string): boolean; + /** + * Check if the provided template id is blacklisted in config/item.json/lootableItemBlacklist + * @param tpl template id + * @returns true if blacklisted + */ + isLootableItemBlacklisted(tpl: string): boolean; + /** + * Check if item is blacklisted from being a reward for player + * @param tpl item tpl to check is on blacklist + * @returns True when blacklisted + */ + isItemRewardBlacklisted(tpl: string): boolean; + /** + * Get an array of items that should never be given as a reward to player + * @returns string array of item tpls + */ + getItemRewardBlacklist(): string[]; /** * Return every template id blacklisted in config/item.json * @returns string array of blacklisted tempalte ids */ getBlacklistedItems(): string[]; + /** + * Return every template id blacklisted in config/item.json/lootableItemBlacklist + * @returns string array of blacklisted tempalte ids + */ + getBlacklistedLootableItems(): string[]; /** * Check if the provided template id is boss item in config/item.json * @param tpl template id diff --git a/TypeScript/23CustomAbstractChatBot/types/services/LocaleService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/LocaleService.d.ts index 5ee5540..2326dcc 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/LocaleService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/LocaleService.d.ts @@ -1,7 +1,7 @@ -import { ILocaleConfig } from "@spt-aki/models/spt/config/ILocaleConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; +import { ILocaleConfig } from "@spt/models/spt/config/ILocaleConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; /** * Handles getting locales from config or users machine */ @@ -33,9 +33,26 @@ export declare class LocaleService { * @returns array of locales e.g. en/fr/cn */ getServerSupportedLocales(): string[]; + /** + * Get array of languages supported for localisation + * @returns array of locales e.g. en/fr/cn + */ + getLocaleFallbacks(): { + [locale: string]: string; + }; + /** + * Get the full locale of the computer running the server lowercased e.g. en-gb / pt-pt + * @returns string + */ + protected getPlatformForServerLocale(): string; /** * Get the locale of the computer running the server * @returns langage part of locale e.g. 'en' part of 'en-US' */ - protected getPlatformLocale(): string; + protected getPlatformForClientLocale(): string; + /** + * This is in a function so we can overwrite it during testing + * @returns The current platform locale + */ + protected getPlatformLocale(): Intl.Locale; } diff --git a/TypeScript/23CustomAbstractChatBot/types/services/LocalisationService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/LocalisationService.d.ts index 939db6f..42dfa4e 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/LocalisationService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/LocalisationService.d.ts @@ -1,9 +1,8 @@ import { I18n } from "i18n"; -import { ILocaleConfig } from "@spt-aki/models/spt/config/ILocaleConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocaleService } from "@spt-aki/services/LocaleService"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { LocaleService } from "@spt/services/LocaleService"; +import { RandomUtil } from "@spt/utils/RandomUtil"; /** * Handles translating server text into different langauges */ @@ -12,7 +11,6 @@ export declare class LocalisationService { protected randomUtil: RandomUtil; protected databaseServer: DatabaseServer; protected localeService: LocaleService; - protected localeConfig: ILocaleConfig; protected i18n: I18n; constructor(logger: ILogger, randomUtil: RandomUtil, databaseServer: DatabaseServer, localeService: LocaleService); /** diff --git a/TypeScript/23CustomAbstractChatBot/types/services/MailSendService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/MailSendService.d.ts index 08752bf..8f1f974 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/MailSendService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/MailSendService.d.ts @@ -1,25 +1,25 @@ -import { DialogueHelper } from "@spt-aki/helpers/DialogueHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { NotificationSendHelper } from "@spt-aki/helpers/NotificationSendHelper"; -import { NotifierHelper } from "@spt-aki/helpers/NotifierHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { Dialogue, IUserDialogInfo, Message, MessageItems } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { MessageType } from "@spt-aki/models/enums/MessageType"; -import { Traders } from "@spt-aki/models/enums/Traders"; -import { ISendMessageDetails } from "@spt-aki/models/spt/dialog/ISendMessageDetails"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { DialogueHelper } from "@spt/helpers/DialogueHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { NotificationSendHelper } from "@spt/helpers/NotificationSendHelper"; +import { NotifierHelper } from "@spt/helpers/NotifierHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { Dialogue, ISystemData, IUserDialogInfo, Message, MessageContentRagfair, MessageItems } from "@spt/models/eft/profile/ISptProfile"; +import { MessageType } from "@spt/models/enums/MessageType"; +import { Traders } from "@spt/models/enums/Traders"; +import { IProfileChangeEvent, ISendMessageDetails } from "@spt/models/spt/dialog/ISendMessageDetails"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class MailSendService { protected logger: ILogger; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected saveServer: SaveServer; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected notifierHelper: NotifierHelper; protected dialogueHelper: DialogueHelper; protected notificationSendHelper: NotificationSendHelper; @@ -27,7 +27,7 @@ export declare class MailSendService { protected itemHelper: ItemHelper; protected traderHelper: TraderHelper; protected readonly systemSenderId = "59e7125688a45068a6249071"; - constructor(logger: ILogger, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, databaseServer: DatabaseServer, notifierHelper: NotifierHelper, dialogueHelper: DialogueHelper, notificationSendHelper: NotificationSendHelper, localisationService: LocalisationService, itemHelper: ItemHelper, traderHelper: TraderHelper); + constructor(logger: ILogger, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, databaseService: DatabaseService, notifierHelper: NotifierHelper, dialogueHelper: DialogueHelper, notificationSendHelper: NotificationSendHelper, localisationService: LocalisationService, itemHelper: ItemHelper, traderHelper: TraderHelper); /** * 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 * @param sessionId The session ID to send the message to @@ -37,7 +37,7 @@ export declare class MailSendService { * @param items Optional items to send to player * @param maxStorageTimeSeconds Optional time to collect items before they expire */ - sendDirectNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, message: string, items?: Item[], maxStorageTimeSeconds?: any, systemData?: any, ragfair?: any): void; + sendDirectNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, message: string, items?: Item[], maxStorageTimeSeconds?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; /** * Send a message from an NPC (e.g. prapor) to the player with or without items * @param sessionId The session ID to send the message to @@ -47,7 +47,7 @@ export declare class MailSendService { * @param items Optional items to send to player * @param maxStorageTimeSeconds Optional time to collect items before they expire */ - sendLocalisedNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, messageLocaleId: string, items?: Item[], maxStorageTimeSeconds?: any, systemData?: any, ragfair?: any): void; + sendLocalisedNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, messageLocaleId: string, items?: Item[], maxStorageTimeSeconds?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; /** * Send a message from SYSTEM to the player with or without items * @param sessionId The session ID to send the message to @@ -55,7 +55,7 @@ export declare class MailSendService { * @param items Optional items to send to player * @param maxStorageTimeSeconds Optional time to collect items before they expire */ - sendSystemMessageToPlayer(sessionId: string, message: string, items?: Item[], maxStorageTimeSeconds?: any): void; + sendSystemMessageToPlayer(sessionId: string, message: string, items?: Item[], maxStorageTimeSeconds?: number, profileChangeEvents?: IProfileChangeEvent[]): void; /** * Send a message from SYSTEM to the player with or without items with localised text * @param sessionId The session ID to send the message to @@ -63,7 +63,7 @@ export declare class MailSendService { * @param items Optional items to send to player * @param maxStorageTimeSeconds Optional time to collect items before they expire */ - sendLocalisedSystemMessageToPlayer(sessionId: string, messageLocaleId: string, items?: Item[], profileChangeEvents?: any[], maxStorageTimeSeconds?: any): void; + sendLocalisedSystemMessageToPlayer(sessionId: string, messageLocaleId: string, items?: Item[], profileChangeEvents?: IProfileChangeEvent[], maxStorageTimeSeconds?: number): void; /** * Send a USER message to a player with or without items * @param sessionId The session ID to send the message to @@ -72,7 +72,7 @@ export declare class MailSendService { * @param items Optional items to send to player * @param maxStorageTimeSeconds Optional time to collect items before they expire */ - sendUserMessageToPlayer(sessionId: string, senderDetails: IUserDialogInfo, message: string, items?: Item[], maxStorageTimeSeconds?: any): void; + sendUserMessageToPlayer(sessionId: string, senderDetails: IUserDialogInfo, message: string, items?: Item[], maxStorageTimeSeconds?: number): void; /** * 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 @@ -99,7 +99,7 @@ export declare class MailSendService { * @param itemsToSendToPlayer Items to add to message * @param maxStorageTimeSeconds total time items are stored in mail before being deleted */ - protected addRewardItemsToMessage(message: Message, itemsToSendToPlayer: MessageItems, maxStorageTimeSeconds: number): void; + protected addRewardItemsToMessage(message: Message, itemsToSendToPlayer: MessageItems | undefined, maxStorageTimeSeconds: number | undefined): void; /** * perform various sanitising actions on the items before they're considered ready for insertion into message * @param dialogType The type of the dialog that will hold the reward items being processed @@ -125,5 +125,5 @@ export declare class MailSendService { * @param messageDetails * @returns gets an id of the individual sending it */ - protected getMessageSenderIdByType(messageDetails: ISendMessageDetails): string; + protected getMessageSenderIdByType(messageDetails: ISendMessageDetails): string | undefined; } diff --git a/TypeScript/23CustomAbstractChatBot/types/services/MapMarkerService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/MapMarkerService.d.ts new file mode 100644 index 0000000..aed5430 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/services/MapMarkerService.d.ts @@ -0,0 +1,37 @@ +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IInventoryCreateMarkerRequestData } from "@spt/models/eft/inventory/IInventoryCreateMarkerRequestData"; +import { IInventoryDeleteMarkerRequestData } from "@spt/models/eft/inventory/IInventoryDeleteMarkerRequestData"; +import { IInventoryEditMarkerRequestData } from "@spt/models/eft/inventory/IInventoryEditMarkerRequestData"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +export declare class MapMarkerService { + protected logger: ILogger; + constructor(logger: ILogger); + /** + * Add note to a map item in player inventory + * @param pmcData Player profile + * @param request Add marker request + * @returns Item + */ + createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): Item; + /** + * Delete a map marker + * @param pmcData Player profile + * @param request Delete marker request + * @returns Item + */ + deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): Item; + /** + * Edit an existing map marker + * @param pmcData Player profile + * @param request Edit marker request + * @returns Item + */ + editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): Item; + /** + * Strip out characters from note string that are not: letter/numbers/unicode/spaces + * @param mapNoteText Marker text to sanitise + * @returns Sanitised map marker text + */ + protected sanitiseMapMarkerText(mapNoteText: string): string; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/services/MatchBotDetailsCacheService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/MatchBotDetailsCacheService.d.ts index 6521719..e899577 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/MatchBotDetailsCacheService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/MatchBotDetailsCacheService.d.ts @@ -1,6 +1,6 @@ -import { IBotBase } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; +import { IBotBase } from "@spt/models/eft/common/tables/IBotBase"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { LocalisationService } from "@spt/services/LocalisationService"; /** Cache bots in a dictionary, keyed by the bots name, keying by name isnt ideal as its not unique but this is used by the post-raid system which doesnt have any bot ids, only name */ export declare class MatchBotDetailsCacheService { protected logger: ILogger; diff --git a/TypeScript/23CustomAbstractChatBot/types/services/MatchLocationService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/MatchLocationService.d.ts index 8f7b3bf..dafa99a 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/MatchLocationService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/MatchLocationService.d.ts @@ -1,9 +1,9 @@ -import { ICreateGroupRequestData } from "@spt-aki/models/eft/match/ICreateGroupRequestData"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class MatchLocationService { protected timeUtil: TimeUtil; + protected saveServer: SaveServer; protected locations: {}; - constructor(timeUtil: TimeUtil); - createGroup(sessionID: string, info: ICreateGroupRequestData): any; + constructor(timeUtil: TimeUtil, saveServer: SaveServer); deleteGroup(info: any): void; } diff --git a/TypeScript/23CustomAbstractChatBot/types/services/ModCompilerService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/ModCompilerService.d.ts index b8f2a37..eb4298c 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/ModCompilerService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/ModCompilerService.d.ts @@ -1,13 +1,13 @@ -import ts from "typescript"; -import type { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { HashCacheService } from "@spt-aki/services/HashCacheService"; -import { VFS } from "@spt-aki/utils/VFS"; +import { CompilerOptions } from "typescript"; +import type { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ModHashCacheService } from "@spt/services/cache/ModHashCacheService"; +import { VFS } from "@spt/utils/VFS"; export declare class ModCompilerService { protected logger: ILogger; - protected hashCacheService: HashCacheService; + protected modHashCacheService: ModHashCacheService; protected vfs: VFS; protected serverDependencies: string[]; - constructor(logger: ILogger, hashCacheService: HashCacheService, vfs: VFS); + constructor(logger: ILogger, modHashCacheService: ModHashCacheService, vfs: VFS); /** * Convert a mods TS into JS * @param modName Name of mod @@ -21,7 +21,7 @@ export declare class ModCompilerService { * @param fileNames Paths to TS files * @param options Compiler options */ - protected compile(fileNames: string[], options: ts.CompilerOptions): Promise; + protected compile(fileNames: string[], options: CompilerOptions): Promise; /** * Do the files at the provided paths exist * @param fileNames diff --git a/TypeScript/23CustomAbstractChatBot/types/services/NotificationService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/NotificationService.d.ts index 3f25b10..69d895a 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/NotificationService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/NotificationService.d.ts @@ -1,4 +1,4 @@ -import { INotification } from "@spt-aki/models/eft/notifier/INotifier"; +import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; export declare class NotificationService { protected messageQueue: Record; getMessageQueue(): Record; @@ -12,7 +12,7 @@ export declare class NotificationService { /** * Add message to queue */ - add(sessionID: string, message: INotification): void; + add(sessionID: string, message: IWsNotificationEvent): void; /** * Get message queue for session * @param sessionID diff --git a/TypeScript/23CustomAbstractChatBot/types/services/OpenZoneService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/OpenZoneService.d.ts index 581975b..c7dd0bd 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/OpenZoneService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/OpenZoneService.d.ts @@ -1,20 +1,18 @@ -import { ILocationConfig } from "@spt-aki/models/spt/config/ILocationConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { RandomUtil } from "@spt/utils/RandomUtil"; /** Service for adding new zones to a maps OpenZones property */ export declare class OpenZoneService { protected logger: ILogger; protected randomUtil: RandomUtil; - protected jsonUtil: JsonUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected localisationService: LocalisationService; protected configServer: ConfigServer; protected locationConfig: ILocationConfig; - constructor(logger: ILogger, randomUtil: RandomUtil, jsonUtil: JsonUtil, databaseServer: DatabaseServer, localisationService: LocalisationService, configServer: ConfigServer); + constructor(logger: ILogger, randomUtil: RandomUtil, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer); /** * Add open zone to specified map * @param locationId map location (e.g. factory4_day) diff --git a/TypeScript/23CustomAbstractChatBot/types/services/PaymentService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/PaymentService.d.ts index d6b22ed..61d5731 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/PaymentService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/PaymentService.d.ts @@ -1,36 +1,38 @@ -import { HandbookHelper } from "@spt-aki/helpers/HandbookHelper"; -import { InventoryHelper } from "@spt-aki/helpers/InventoryHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IProcessBuyTradeRequestData } from "@spt-aki/models/eft/trade/IProcessBuyTradeRequestData"; -import { IProcessSellTradeRequestData } from "@spt-aki/models/eft/trade/IProcessSellTradeRequestData"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { HandbookHelper } from "@spt/helpers/HandbookHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PaymentHelper } from "@spt/helpers/PaymentHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IProcessBuyTradeRequestData } from "@spt/models/eft/trade/IProcessBuyTradeRequestData"; +import { IProcessSellTradeRequestData } from "@spt/models/eft/trade/IProcessSellTradeRequestData"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class PaymentService { protected logger: ILogger; + protected hashUtil: HashUtil; protected httpResponse: HttpResponseUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected handbookHelper: HandbookHelper; protected traderHelper: TraderHelper; protected itemHelper: ItemHelper; protected inventoryHelper: InventoryHelper; protected localisationService: LocalisationService; protected paymentHelper: PaymentHelper; - constructor(logger: ILogger, httpResponse: HttpResponseUtil, databaseServer: DatabaseServer, handbookHelper: HandbookHelper, traderHelper: TraderHelper, itemHelper: ItemHelper, inventoryHelper: InventoryHelper, localisationService: LocalisationService, paymentHelper: PaymentHelper); + constructor(logger: ILogger, hashUtil: HashUtil, httpResponse: HttpResponseUtil, databaseService: DatabaseService, handbookHelper: HandbookHelper, traderHelper: TraderHelper, itemHelper: ItemHelper, inventoryHelper: InventoryHelper, localisationService: LocalisationService, paymentHelper: PaymentHelper); /** * Take money and insert items into return to server request - * @param {IPmcData} pmcData Player profile - * @param {IProcessBuyTradeRequestData} request - * @param {string} sessionID - * @returns IItemEventRouterResponse + * @param pmcData Pmc profile + * @param request Buy item request + * @param sessionID Session id + * @param output Client response */ - payMoney(pmcData: IPmcData, request: IProcessBuyTradeRequestData, sessionID: string, output: IItemEventRouterResponse): IItemEventRouterResponse; + payMoney(pmcData: IPmcData, request: IProcessBuyTradeRequestData, sessionID: string, output: IItemEventRouterResponse): void; /** * Get the item price of a specific traders assort * @param traderAssortId Id of assort to look up @@ -41,19 +43,13 @@ export declare class PaymentService { /** * Receive money back after selling * @param {IPmcData} pmcData - * @param {number} amount - * @param {IProcessSellTradeRequestData} body + * @param {number} amountToSend + * @param {IProcessSellTradeRequestData} request * @param {IItemEventRouterResponse} output * @param {string} sessionID * @returns IItemEventRouterResponse */ - getMoney(pmcData: IPmcData, amount: number, body: IProcessSellTradeRequestData, output: IItemEventRouterResponse, sessionID: string): IItemEventRouterResponse; - /** - * Recursively checks if the given item is - * inside the stash, that is it has the stash as - * ancestor with slotId=hideout - */ - protected isItemInStash(pmcData: IPmcData, item: Item): boolean; + giveProfileMoney(pmcData: IPmcData, amountToSend: number, request: IProcessSellTradeRequestData, output: IItemEventRouterResponse, sessionID: string): void; /** * Remove currency from player stash/inventory and update client object with changes * @param pmcData Player profile to find and remove currency from @@ -61,11 +57,10 @@ export declare class PaymentService { * @param amountToPay money value to pay * @param sessionID Session id * @param output output object to send to client - * @returns IItemEventRouterResponse */ - addPaymentToOutput(pmcData: IPmcData, currencyTpl: string, amountToPay: number, sessionID: string, output: IItemEventRouterResponse): IItemEventRouterResponse; + addPaymentToOutput(pmcData: IPmcData, currencyTpl: string, amountToPay: number, sessionID: string, output: IItemEventRouterResponse): void; /** - * Get all money stacks in inventory and prioritse items in stash + * Get all money stacks in inventory and prioritise items in stash * @param pmcData * @param currencyTpl * @param playerStashId Players stash id @@ -89,5 +84,5 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns true if its in inventory */ - protected isInStash(itemId: string, inventoryItems: Item[], playerStashId: string): boolean; + protected isInStash(itemId: string | undefined, inventoryItems: Item[], playerStashId: string): boolean; } diff --git a/TypeScript/23CustomAbstractChatBot/types/services/PlayerService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/PlayerService.d.ts index f24e0dc..84c4c6f 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/PlayerService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/PlayerService.d.ts @@ -1,14 +1,14 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class PlayerService { protected logger: ILogger; protected timeUtil: TimeUtil; protected localisationService: LocalisationService; - protected databaseServer: DatabaseServer; - constructor(logger: ILogger, timeUtil: TimeUtil, localisationService: LocalisationService, databaseServer: DatabaseServer); + protected databaseService: DatabaseService; + constructor(logger: ILogger, timeUtil: TimeUtil, localisationService: LocalisationService, databaseService: DatabaseService); /** * Get level of player * @param pmcData Player profile diff --git a/TypeScript/23CustomAbstractChatBot/types/services/PmcChatResponseService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/PmcChatResponseService.d.ts index b5a0b8b..4a22f10 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/PmcChatResponseService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/PmcChatResponseService.d.ts @@ -1,24 +1,30 @@ -import { NotificationSendHelper } from "@spt-aki/helpers/NotificationSendHelper"; -import { WeightedRandomHelper } from "@spt-aki/helpers/WeightedRandomHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Aggressor, Victim } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { IUserDialogInfo } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { IPmcChatResponse } from "@spt-aki/models/spt/config/IPmChatResponse"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { MatchBotDetailsCacheService } from "@spt-aki/services/MatchBotDetailsCacheService"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { NotificationSendHelper } from "@spt/helpers/NotificationSendHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Aggressor, Victim } from "@spt/models/eft/common/tables/IBotBase"; +import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; +import { IGiftsConfig } from "@spt/models/spt/config/IGiftsConfig"; +import { IPmcChatResponse } from "@spt/models/spt/config/IPmChatResponse"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { GiftService } from "@spt/services/GiftService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { MatchBotDetailsCacheService } from "@spt/services/MatchBotDetailsCacheService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class PmcChatResponseService { protected logger: ILogger; + protected hashUtil: HashUtil; protected randomUtil: RandomUtil; protected notificationSendHelper: NotificationSendHelper; protected matchBotDetailsCacheService: MatchBotDetailsCacheService; protected localisationService: LocalisationService; + protected giftService: GiftService; protected weightedRandomHelper: WeightedRandomHelper; protected configServer: ConfigServer; protected pmcResponsesConfig: IPmcChatResponse; - constructor(logger: ILogger, randomUtil: RandomUtil, notificationSendHelper: NotificationSendHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, localisationService: LocalisationService, weightedRandomHelper: WeightedRandomHelper, configServer: ConfigServer); + protected giftConfig: IGiftsConfig; + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, notificationSendHelper: NotificationSendHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, localisationService: LocalisationService, giftService: GiftService, weightedRandomHelper: WeightedRandomHelper, configServer: ConfigServer); /** * For each PMC victim of the player, have a chance to send a message to the player, can be positive or negative * @param sessionId Session id @@ -39,7 +45,7 @@ export declare class PmcChatResponseService { * @param pmcData Player profile * @returns Message from PMC to player */ - protected chooseMessage(isVictim: boolean, pmcData: IPmcData): string; + protected chooseMessage(isVictim: boolean, pmcData: IPmcData): string | undefined; /** * Should capitalisation be stripped from the message response before sending * @param isVictim Was responder a victim of player diff --git a/TypeScript/23CustomAbstractChatBot/types/services/ProfileActivityService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/ProfileActivityService.d.ts new file mode 100644 index 0000000..fdc86c7 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/services/ProfileActivityService.d.ts @@ -0,0 +1,21 @@ +export declare class ProfileActivityService { + protected profileActivityTimestamps: Record; + /** + * Was the requested profile active in the last requested minutes + * @param sessionId Profile to check + * @param minutes Minutes to check for activity in + * @returns True when profile was active within past x minutes + */ + activeWithinLastMinutes(sessionId: string, minutes: number): boolean; + /** + * Get an array of profile ids that were active in the last x minutes + * @param minutes How many minutes from now to search for profiles + * @returns String array of profile ids + */ + getActiveProfileIdsWithinMinutes(minutes: number): string[]; + /** + * Update the timestamp a profile was last observed active + * @param sessionId Profile to update + */ + setActivityTimestamp(sessionId: string): void; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/services/ProfileFixerService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/ProfileFixerService.d.ts index e2e140b..525b867 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/ProfileFixerService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/ProfileFixerService.d.ts @@ -1,27 +1,30 @@ -import { HideoutHelper } from "@spt-aki/helpers/HideoutHelper"; -import { InventoryHelper } from "@spt-aki/helpers/InventoryHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Bonus, HideoutSlot } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { IPmcDataRepeatableQuest, IRepeatableQuest } from "@spt-aki/models/eft/common/tables/IRepeatableQuests"; -import { StageBonus } from "@spt-aki/models/eft/hideout/IHideoutArea"; -import { IAkiProfile } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { HideoutAreas } from "@spt-aki/models/enums/HideoutAreas"; -import { ICoreConfig } from "@spt-aki/models/spt/config/ICoreConfig"; -import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; -import { Watermark } from "@spt-aki/utils/Watermark"; +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Bonus, HideoutSlot } from "@spt/models/eft/common/tables/IBotBase"; +import { IPmcDataRepeatableQuest, IRepeatableQuest } from "@spt/models/eft/common/tables/IRepeatableQuests"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { StageBonus } from "@spt/models/eft/hideout/IHideoutArea"; +import { ISptProfile, IEquipmentBuild, IMagazineBuild, IWeaponBuild } from "@spt/models/eft/profile/ISptProfile"; +import { HideoutAreas } from "@spt/models/enums/HideoutAreas"; +import { ICoreConfig } from "@spt/models/spt/config/ICoreConfig"; +import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { JsonUtil } from "@spt/utils/JsonUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { Watermark } from "@spt/utils/Watermark"; export declare class ProfileFixerService { protected logger: ILogger; protected watermark: Watermark; + protected databaseService: DatabaseService; protected hideoutHelper: HideoutHelper; protected inventoryHelper: InventoryHelper; protected traderHelper: TraderHelper; @@ -31,11 +34,11 @@ export declare class ProfileFixerService { protected timeUtil: TimeUtil; protected jsonUtil: JsonUtil; protected hashUtil: HashUtil; - protected databaseServer: DatabaseServer; protected configServer: ConfigServer; + protected cloner: ICloner; protected coreConfig: ICoreConfig; protected ragfairConfig: IRagfairConfig; - constructor(logger: ILogger, watermark: Watermark, hideoutHelper: HideoutHelper, inventoryHelper: InventoryHelper, traderHelper: TraderHelper, profileHelper: ProfileHelper, itemHelper: ItemHelper, localisationService: LocalisationService, timeUtil: TimeUtil, jsonUtil: JsonUtil, hashUtil: HashUtil, databaseServer: DatabaseServer, configServer: ConfigServer); + constructor(logger: ILogger, watermark: Watermark, databaseService: DatabaseService, hideoutHelper: HideoutHelper, inventoryHelper: InventoryHelper, traderHelper: TraderHelper, profileHelper: ProfileHelper, itemHelper: ItemHelper, localisationService: LocalisationService, timeUtil: TimeUtil, jsonUtil: JsonUtil, hashUtil: HashUtil, configServer: ConfigServer, cloner: ICloner); /** * Find issues in the pmc profile data that may cause issues and fix them * @param pmcProfile profile to check and fix @@ -47,15 +50,15 @@ export declare class ProfileFixerService { */ checkForAndFixScavProfileIssues(scavProfile: IPmcData): void; protected addMissingGunStandContainerImprovements(pmcProfile: IPmcData): void; + protected addMissingHallOfFameContainerImprovements(pmcProfile: IPmcData): void; protected ensureGunStandLevelsMatch(pmcProfile: IPmcData): void; protected addHideoutAreaStashes(pmcProfile: IPmcData): void; protected addMissingHideoutWallAreas(pmcProfile: IPmcData): void; - protected adjustUnreasonableModFleaPrices(): void; /** * Add tag to profile to indicate when it was made * @param fullProfile */ - addMissingAkiVersionTagToProfile(fullProfile: IAkiProfile): void; + addMissingSptVersionTagToProfile(fullProfile: ISptProfile): void; /** * TODO - make this non-public - currently used by RepeatableQuestController * Remove unused condition counters @@ -64,7 +67,11 @@ export declare class ProfileFixerService { removeDanglingConditionCounters(pmcProfile: IPmcData): void; addLighthouseKeeperIfMissing(pmcProfile: IPmcData): void; protected addUnlockedInfoObjectIfMissing(pmcProfile: IPmcData): void; - protected removeDanglingBackendCounters(pmcProfile: IPmcData): void; + /** + * Repeatable quests leave behind TaskConditionCounter objects that make the profile bloat with time, remove them + * @param pmcProfile Player profile to check + */ + protected removeDanglingTaskConditionCounters(pmcProfile: IPmcData): void; protected getActiveRepeatableQuests(repeatableQuests: IPmcDataRepeatableQuest[]): IRepeatableQuest[]; protected fixNullTraderSalesSums(pmcProfile: IPmcData): void; protected addMissingBonusesProperty(pmcProfile: IPmcData): void; @@ -98,11 +105,6 @@ export declare class ProfileFixerService { */ protected addEmptyObjectsToHideoutAreaSlots(areaType: HideoutAreas, emptyItemCount: number, pmcProfile: IPmcData): void; protected addObjectsToArray(count: number, slots: HideoutSlot[]): HideoutSlot[]; - /** - * In 18876 bsg changed the pockets tplid to be one that has 3 additional special slots - * @param pmcProfile - */ - protected updateProfilePocketsToNewId(pmcProfile: IPmcData): void; /** * Iterate over players hideout areas and find what's build, look for missing bonuses those areas give and add them if missing * @param pmcProfile Profile to update @@ -113,13 +115,26 @@ export declare class ProfileFixerService { * @param bonus bonus to find * @returns matching bonus */ - protected getBonusFromProfile(profileBonuses: Bonus[], bonus: StageBonus): Bonus; + protected getBonusFromProfile(profileBonuses: Bonus[], bonus: StageBonus): Bonus | undefined; /** * Checks profile inventiory for items that do not exist inside the items db * @param sessionId Session id * @param pmcProfile Profile to check inventory of */ - checkForOrphanedModdedItems(sessionId: string, fullProfile: IAkiProfile): void; + checkForOrphanedModdedItems(sessionId: string, fullProfile: ISptProfile): void; + /** + * @param buildType The type of build, used for logging only + * @param build The build to check for invalid items + * @param itemsDb The items database to use for item lookup + * @returns True if the build should be removed from the build list, false otherwise + */ + protected shouldRemoveWeaponEquipmentBuild(buildType: string, build: IWeaponBuild | IEquipmentBuild, itemsDb: Record): boolean; + /** + * @param magazineBuild The magazine build to check for validity + * @param itemsDb The items database to use for item lookup + * @returns True if the build should be removed from the build list, false otherwise + */ + protected shouldRemoveMagazineBuild(magazineBuild: IMagazineBuild, itemsDb: Record): boolean; /** * Attempt to fix common item issues that corrupt profiles * @param pmcProfile Profile to check items of @@ -134,7 +149,7 @@ export declare class ProfileFixerService { * Iterate over associated profile template and check all hideout areas exist, add if not * @param fullProfile Profile to update */ - addMissingHideoutAreasToProfile(fullProfile: IAkiProfile): void; + addMissingHideoutAreasToProfile(fullProfile: ISptProfile): void; /** * These used to be used for storing scav case rewards, rewards are now generated on pickup * @param pmcProfile Profile to update @@ -145,20 +160,34 @@ export declare class ProfileFixerService { * We store the old AID value in new field `sessionId` * @param fullProfile Profile to update */ - fixIncorrectAidValue(fullProfile: IAkiProfile): void; + fixIncorrectAidValue(fullProfile: ISptProfile): void; /** * Bsg nested `stats` into a sub object called 'eft' * @param fullProfile Profile to check for and migrate stats data */ - migrateStatsToNewStructure(fullProfile: IAkiProfile): void; + migrateStatsToNewStructure(fullProfile: ISptProfile): void; /** * 26126 (7th August) requires bonuses to have an ID, these were not included in the default profile presets * @param pmcProfile Profile to add missing IDs to */ addMissingIdsToBonuses(pmcProfile: IPmcData): void; + /** + * 3.8.0 utilized the wrong ProductionTime for bitcoin, fix it if it's found + */ + fixBitcoinProductionTime(pmcProfile: IPmcData): void; /** * At some point the property name was changed,migrate data across to new name * @param pmcProfile Profile to migrate improvements in */ protected migrateImprovements(pmcProfile: IPmcData): void; + /** + * After removing mods that add quests, the quest panel will break without removing these + * @param pmcProfile Profile to remove dead quests from + */ + protected removeOrphanedQuests(pmcProfile: IPmcData): void; + /** + * If someone has run a mod from pre-3.8.0, it results in an invalid `nextResupply` value + * Resolve this by setting the nextResupply to 0 if it's undefined + */ + protected fixNullTraderNextResupply(pmcProfile: IPmcData): void; } diff --git a/TypeScript/23CustomAbstractChatBot/types/services/ProfileSnapshotService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/ProfileSnapshotService.d.ts index 3f60d41..4492dda 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/ProfileSnapshotService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/ProfileSnapshotService.d.ts @@ -1,21 +1,21 @@ -import { IAkiProfile } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class ProfileSnapshotService { - protected jsonUtil: JsonUtil; - protected storedProfileSnapshots: Record; - constructor(jsonUtil: JsonUtil); + protected cloner: ICloner; + protected storedProfileSnapshots: Record; + constructor(cloner: ICloner); /** * Store a profile into an in-memory object * @param sessionID session id - acts as the key * @param profile - profile to save */ - storeProfileSnapshot(sessionID: string, profile: IAkiProfile): void; + storeProfileSnapshot(sessionID: string, profile: ISptProfile): void; /** * Retreve a stored profile * @param sessionID key * @returns A player profile object */ - getProfileSnapshot(sessionID: string): IAkiProfile; + getProfileSnapshot(sessionID: string): ISptProfile | undefined; /** * Does a profile exists against the provided key * @param sessionID key diff --git a/TypeScript/23CustomAbstractChatBot/types/services/RagfairCategoriesService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/RagfairCategoriesService.d.ts index ef40275..c1ecb2d 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/RagfairCategoriesService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/RagfairCategoriesService.d.ts @@ -1,7 +1,7 @@ -import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper"; -import { IRagfairOffer } from "@spt-aki/models/eft/ragfair/IRagfairOffer"; -import { ISearchRequestData } from "@spt-aki/models/eft/ragfair/ISearchRequestData"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; +import { PaymentHelper } from "@spt/helpers/PaymentHelper"; +import { IRagfairOffer } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ISearchRequestData } from "@spt/models/eft/ragfair/ISearchRequestData"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; export declare class RagfairCategoriesService { protected logger: ILogger; protected paymentHelper: PaymentHelper; diff --git a/TypeScript/23CustomAbstractChatBot/types/services/RagfairLinkedItemService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/RagfairLinkedItemService.d.ts index 3d607ac..0d03459 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/RagfairLinkedItemService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/RagfairLinkedItemService.d.ts @@ -1,11 +1,11 @@ -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { DatabaseService } from "@spt/services/DatabaseService"; export declare class RagfairLinkedItemService { - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected itemHelper: ItemHelper; protected linkedItemsCache: Record>; - constructor(databaseServer: DatabaseServer, itemHelper: ItemHelper); + constructor(databaseService: DatabaseService, itemHelper: ItemHelper); getLinkedItems(linkedSearchId: string): Set; /** * Use ragfair linked item service to get an array of items that can fit on or in designated itemtpl diff --git a/TypeScript/23CustomAbstractChatBot/types/services/RagfairOfferService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/RagfairOfferService.d.ts index ce86ee3..6c13b1d 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/RagfairOfferService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/RagfairOfferService.d.ts @@ -1,49 +1,60 @@ -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { RagfairServerHelper } from "@spt-aki/helpers/RagfairServerHelper"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IRagfairOffer } from "@spt-aki/models/eft/ragfair/IRagfairOffer"; -import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -import { RagfairOfferHolder } from "@spt-aki/utils/RagfairOfferHolder"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { RagfairServerHelper } from "@spt/helpers/RagfairServerHelper"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IRagfairOffer } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; +import { RagfairOfferHolder } from "@spt/utils/RagfairOfferHolder"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class RagfairOfferService { protected logger: ILogger; protected timeUtil: TimeUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected saveServer: SaveServer; protected ragfairServerHelper: RagfairServerHelper; + protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; protected eventOutputHolder: EventOutputHolder; protected httpResponse: HttpResponseUtil; protected localisationService: LocalisationService; protected configServer: ConfigServer; + protected cloner: ICloner; protected playerOffersLoaded: boolean; + /** Offer id + offer object */ protected expiredOffers: Record; protected ragfairConfig: IRagfairConfig; protected ragfairOfferHandler: RagfairOfferHolder; - constructor(logger: ILogger, timeUtil: TimeUtil, databaseServer: DatabaseServer, saveServer: SaveServer, ragfairServerHelper: RagfairServerHelper, profileHelper: ProfileHelper, eventOutputHolder: EventOutputHolder, httpResponse: HttpResponseUtil, localisationService: LocalisationService, configServer: ConfigServer); + constructor(logger: ILogger, timeUtil: TimeUtil, databaseService: DatabaseService, saveServer: SaveServer, ragfairServerHelper: RagfairServerHelper, itemHelper: ItemHelper, profileHelper: ProfileHelper, eventOutputHolder: EventOutputHolder, httpResponse: HttpResponseUtil, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); /** * Get all offers * @returns IRagfairOffer array */ getOffers(): IRagfairOffer[]; - getOfferByOfferId(offerId: string): IRagfairOffer; - getOffersOfType(templateId: string): IRagfairOffer[]; + getOfferByOfferId(offerId: string): IRagfairOffer | undefined; + getOffersOfType(templateId: string): IRagfairOffer[] | undefined; addOffer(offer: IRagfairOffer): void; addOfferToExpired(staleOffer: IRagfairOffer): void; + /** + * Get total count of current expired offers + * @returns Number of expired offers + */ getExpiredOfferCount(): number; /** - * Get an array of expired items not yet processed into new offers - * @returns items that need to be turned into offers + * Get an array of arrays of expired offer items + children + * @returns Expired offer assorts + */ + getExpiredOfferAssorts(): Item[][]; + /** + * Clear out internal expiredOffers dictionary of all items */ - getExpiredOfferItems(): Item[]; resetExpiredOffers(): void; /** * Does the offer exist on the ragfair @@ -76,5 +87,13 @@ export declare class RagfairOfferService { * @param staleOffer Stale offer to process */ protected processStaleOffer(staleOffer: IRagfairOffer): void; - protected returnPlayerOffer(offer: IRagfairOffer): IItemEventRouterResponse; + protected returnPlayerOffer(playerOffer: IRagfairOffer): void; + /** + * Flea offer items are stacked up often beyond the StackMaxSize limit + * Un stack the items into an array of root items and their children + * Will create new items equal to the + * @param items Offer items to unstack + * @returns Unstacked array of items + */ + protected unstackOfferItems(items: Item[]): Item[]; } diff --git a/TypeScript/23CustomAbstractChatBot/types/services/RagfairPriceService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/RagfairPriceService.d.ts index 3e91d52..0a2f26e 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/RagfairPriceService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/RagfairPriceService.d.ts @@ -1,25 +1,26 @@ -import { OnLoad } from "@spt-aki/di/OnLoad"; -import { HandbookHelper } from "@spt-aki/helpers/HandbookHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PresetHelper } from "@spt-aki/helpers/PresetHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { MinMax } from "@spt-aki/models/common/MinMax"; -import { IPreset } from "@spt-aki/models/eft/common/IGlobals"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { IBarterScheme } from "@spt-aki/models/eft/common/tables/ITrader"; -import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig"; -import { IRagfairServerPrices } from "@spt-aki/models/spt/ragfair/IRagfairServerPrices"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { OnLoad } from "@spt/di/OnLoad"; +import { HandbookHelper } from "@spt/helpers/HandbookHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { MinMax } from "@spt/models/common/MinMax"; +import { IPreset } from "@spt/models/eft/common/IGlobals"; +import { HandbookItem } from "@spt/models/eft/common/tables/IHandbookBase"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; +import { IRagfairConfig, IUnreasonableModPrices } from "@spt/models/spt/config/IRagfairConfig"; +import { IRagfairServerPrices } from "@spt/models/spt/ragfair/IRagfairServerPrices"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { RandomUtil } from "@spt/utils/RandomUtil"; /** * Stores flea prices for items as well as methods to interact with them */ export declare class RagfairPriceService implements OnLoad { protected handbookHelper: HandbookHelper; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected logger: ILogger; protected itemHelper: ItemHelper; protected presetHelper: PresetHelper; @@ -28,10 +29,8 @@ export declare class RagfairPriceService implements OnLoad { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected ragfairConfig: IRagfairConfig; - protected generatedDynamicPrices: boolean; - protected generatedStaticPrices: boolean; protected prices: IRagfairServerPrices; - constructor(handbookHelper: HandbookHelper, databaseServer: DatabaseServer, logger: ILogger, itemHelper: ItemHelper, presetHelper: PresetHelper, traderHelper: TraderHelper, randomUtil: RandomUtil, localisationService: LocalisationService, configServer: ConfigServer); + constructor(handbookHelper: HandbookHelper, databaseService: DatabaseService, logger: ILogger, itemHelper: ItemHelper, presetHelper: PresetHelper, traderHelper: TraderHelper, randomUtil: RandomUtil, localisationService: LocalisationService, configServer: ConfigServer); /** * Generate static (handbook) and dynamic (prices.json) flea prices, store inside class as dictionaries */ @@ -40,11 +39,11 @@ export declare class RagfairPriceService implements OnLoad { /** * Iterate over all items of type "Item" in db and get template price, store in cache */ - generateStaticPrices(): void; + refreshStaticPrices(): void; /** - * Create a dictionary and store prices from prices.json in it + * Copy the prices.json data into our dynamic price dictionary */ - protected generateDynamicPrices(): void; + refreshDynamicPrices(): void; /** * Get the dynamic price for an item. If value doesn't exist, use static (handbook) value. * if no static value, return 1 @@ -52,9 +51,14 @@ export declare class RagfairPriceService implements OnLoad { * @returns price in roubles */ getFleaPriceForItem(tplId: string): number; + /** + * Get the flea price for an offers items + children + * @param offerItems offer item + children to process + * @returns Rouble price + */ + getFleaPriceForOfferItems(offerItems: Item[]): number; /** * get the dynamic (flea) price for an item - * Grabs prices from prices.json and stores in class if none currently exist * @param itemTpl item template id to look up * @returns price in roubles */ @@ -66,7 +70,8 @@ export declare class RagfairPriceService implements OnLoad { */ getStaticPriceForItem(itemTpl: string): number; /** - * Get prices for all items on flea, priorities dynamic prices from prices.json, use handbook prices if missing + * 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 * @returns Dictionary of item tpls and rouble cost */ getAllFleaPrices(): Record; @@ -86,12 +91,30 @@ export declare class RagfairPriceService implements OnLoad { getBarterPrice(barterScheme: IBarterScheme[]): number; /** * Generate a currency cost for an item and its mods - * @param items Item with mods to get price for + * @param offerItems Item with mods to get price for * @param desiredCurrency Currency price desired in * @param isPackOffer Price is for a pack type offer * @returns cost of item in desired currency */ - getDynamicOfferPriceForOffer(items: Item[], desiredCurrency: string, isPackOffer: boolean): number; + getDynamicOfferPriceForOffer(offerItems: Item[], desiredCurrency: string, isPackOffer: boolean): number; + /** + * @param itemTemplateId items tpl value + * @param desiredCurrency Currency to return result in + * @param item Item object (used for weapon presets) + * @param offerItems + * @param isPackOffer + * @returns + */ + getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: Item, offerItems?: Item[], isPackOffer?: boolean): number; + /** + * using data from config, adjust an items price to be relative to its handbook price + * @param handbookPrices Prices of items in handbook + * @param unreasonableItemChange Change object from config + * @param itemTpl Item being adjusted + * @param price Current price of item + * @returns Adjusted price of item + */ + protected adjustUnreasonablePrice(handbookPrices: HandbookItem[], unreasonableItemChange: IUnreasonableModPrices, itemTpl: string, price: number): number; /** * Get different min/max price multipliers for different offer types (preset/pack/default) * @param isPreset Offer is a preset @@ -100,7 +123,7 @@ export declare class RagfairPriceService implements OnLoad { */ protected getOfferTypeRangeValues(isPreset: boolean, isPack: boolean): MinMax; /** - * Check to see if an items price is below its handbook price and adjust accoring to values set to config/ragfair.json + * Check to see if an items price is below its handbook price and adjust according to values set to config/ragfair.json * @param itemPrice price of item * @param itemTpl item template Id being checked * @returns adjusted price value in roubles @@ -115,12 +138,12 @@ export declare class RagfairPriceService implements OnLoad { protected randomiseOfferPrice(existingPrice: number, rangeValues: MinMax): number; /** * Calculate the cost of a weapon preset by adding together the price of its mods + base price of default weapon preset - * @param item base weapon - * @param items weapon plus mods + * @param weaponRootItem base weapon + * @param weaponWithChildren weapon plus mods * @param existingPrice price of existing base weapon * @returns price of weapon in roubles */ - protected getWeaponPresetPrice(item: Item, items: Item[], existingPrice: number): number; + protected getWeaponPresetPrice(weaponRootItem: Item, weaponWithChildren: Item[], existingPrice: number): number; /** * Get the highest price for an item that is stored in handbook or trader assorts * @param itemTpl Item to get highest price of @@ -133,7 +156,7 @@ export declare class RagfairPriceService implements OnLoad { * @param presets weapon presets to choose from * @returns Default preset object */ - protected getWeaponPreset(presets: IPreset[], weapon: Item): { + protected getWeaponPreset(weapon: Item): { isDefault: boolean; preset: IPreset; }; diff --git a/TypeScript/23CustomAbstractChatBot/types/services/RagfairRequiredItemsService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/RagfairRequiredItemsService.d.ts index 3d030c2..cfc224d 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/RagfairRequiredItemsService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/RagfairRequiredItemsService.d.ts @@ -1,12 +1,13 @@ -import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { RagfairOfferService } from "@spt-aki/services/RagfairOfferService"; +import { PaymentHelper } from "@spt/helpers/PaymentHelper"; +import { IRagfairOffer } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { RagfairOfferService } from "@spt/services/RagfairOfferService"; export declare class RagfairRequiredItemsService { protected logger: ILogger; protected paymentHelper: PaymentHelper; protected ragfairOfferService: RagfairOfferService; protected requiredItemsCache: {}; constructor(logger: ILogger, paymentHelper: PaymentHelper, ragfairOfferService: RagfairOfferService); - getRequiredItemsById(searchId: string): any; + getRequiredItemsById(searchId: string): IRagfairOffer[]; buildRequiredItemTable(): void; } diff --git a/TypeScript/23CustomAbstractChatBot/types/services/RagfairTaxService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/RagfairTaxService.d.ts index e72228f..effb9f0 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/RagfairTaxService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/RagfairTaxService.d.ts @@ -1,21 +1,31 @@ -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { IStorePlayerOfferTaxAmountRequestData } from "@spt-aki/models/eft/ragfair/IStorePlayerOfferTaxAmountRequestData"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { RagfairPriceService } from "@spt-aki/services/RagfairPriceService"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { IStorePlayerOfferTaxAmountRequestData } from "@spt/models/eft/ragfair/IStorePlayerOfferTaxAmountRequestData"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { RagfairPriceService } from "@spt/services/RagfairPriceService"; export declare class RagfairTaxService { protected logger: ILogger; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected ragfairPriceService: RagfairPriceService; protected itemHelper: ItemHelper; protected playerOfferTaxCache: Record; - constructor(logger: ILogger, databaseServer: DatabaseServer, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper); + constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper); storeClientOfferTaxValue(sessionId: string, offer: IStorePlayerOfferTaxAmountRequestData): void; clearStoredOfferTaxById(offerIdToRemove: string): void; getStoredClientOfferTaxValueById(offerIdToGet: string): IStorePlayerOfferTaxAmountRequestData; + /** + // 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. + * @param item Item being sold on flea + * @param pmcData player profile + * @param requirementsValue + * @param offerItemCount Number of offers being created + * @param sellInOnePiece + * @returns Tax in roubles + */ calculateTax(item: Item, pmcData: IPmcData, requirementsValue: number, offerItemCount: number, sellInOnePiece: boolean): number; protected calculateItemWorth(item: Item, itemTemplate: ITemplateItem, itemCount: number, pmcData: IPmcData, isRootItem?: boolean): number; } diff --git a/TypeScript/23CustomAbstractChatBot/types/services/RaidTimeAdjustmentService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/RaidTimeAdjustmentService.d.ts index a2a223a..bfc099a 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/RaidTimeAdjustmentService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/RaidTimeAdjustmentService.d.ts @@ -1,23 +1,23 @@ -import { ApplicationContext } from "@spt-aki/context/ApplicationContext"; -import { WeightedRandomHelper } from "@spt-aki/helpers/WeightedRandomHelper"; -import { ILocationBase } from "@spt-aki/models/eft/common/ILocationBase"; -import { IGetRaidTimeRequest } from "@spt-aki/models/eft/game/IGetRaidTimeRequest"; -import { ExtractChange, IGetRaidTimeResponse } from "@spt-aki/models/eft/game/IGetRaidTimeResponse"; -import { ILocationConfig, IScavRaidTimeLocationSettings, LootMultiplier } from "@spt-aki/models/spt/config/ILocationConfig"; -import { IRaidChanges } from "@spt-aki/models/spt/location/IRaidChanges"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IGetRaidTimeRequest } from "@spt/models/eft/game/IGetRaidTimeRequest"; +import { ExtractChange, IGetRaidTimeResponse } from "@spt/models/eft/game/IGetRaidTimeResponse"; +import { ILocationConfig, IScavRaidTimeLocationSettings, LootMultiplier } from "@spt/models/spt/config/ILocationConfig"; +import { IRaidChanges } from "@spt/models/spt/location/IRaidChanges"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class RaidTimeAdjustmentService { protected logger: ILogger; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected randomUtil: RandomUtil; protected weightedRandomHelper: WeightedRandomHelper; protected applicationContext: ApplicationContext; protected configServer: ConfigServer; protected locationConfig: ILocationConfig; - constructor(logger: ILogger, databaseServer: DatabaseServer, randomUtil: RandomUtil, weightedRandomHelper: WeightedRandomHelper, applicationContext: ApplicationContext, configServer: ConfigServer); + constructor(logger: ILogger, databaseService: DatabaseService, randomUtil: RandomUtil, weightedRandomHelper: WeightedRandomHelper, applicationContext: ApplicationContext, configServer: ConfigServer); /** * Make alterations to the base map data passed in * Loot multipliers/waves/wave start times @@ -56,5 +56,5 @@ export declare class RaidTimeAdjustmentService { * @param newRaidTimeMinutes How long raid is in minutes * @returns List of exit changes to send to client */ - protected getExitAdjustments(mapBase: ILocationBase, newRaidTimeMinutes: number): ExtractChange[]; + protected getExitAdjustments(mapBase: ILocationBase, newRaidTimeMinutes: number): ExtractChange[] | undefined; } diff --git a/TypeScript/23CustomAbstractChatBot/types/services/RepairService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/RepairService.d.ts index cb0070f..48f306e 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/RepairService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/RepairService.d.ts @@ -1,25 +1,26 @@ -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { RepairHelper } from "@spt-aki/helpers/RepairHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { WeightedRandomHelper } from "@spt-aki/helpers/WeightedRandomHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { RepairKitsInfo } from "@spt-aki/models/eft/repair/IRepairActionDataRequest"; -import { RepairItem } from "@spt-aki/models/eft/repair/ITraderRepairActionDataRequest"; -import { SkillTypes } from "@spt-aki/models/enums/SkillTypes"; -import { BonusSettings, IRepairConfig } from "@spt-aki/models/spt/config/IRepairConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { PaymentService } from "@spt-aki/services/PaymentService"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { RepairHelper } from "@spt/helpers/RepairHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { RepairKitsInfo } from "@spt/models/eft/repair/IRepairActionDataRequest"; +import { RepairItem } from "@spt/models/eft/repair/ITraderRepairActionDataRequest"; +import { BonusType } from "@spt/models/enums/BonusType"; +import { SkillTypes } from "@spt/models/enums/SkillTypes"; +import { BonusSettings, IRepairConfig } from "@spt/models/spt/config/IRepairConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { PaymentService } from "@spt/services/PaymentService"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class RepairService { protected logger: ILogger; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected profileHelper: ProfileHelper; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; @@ -30,7 +31,7 @@ export declare class RepairService { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected repairConfig: IRepairConfig; - constructor(logger: ILogger, databaseServer: DatabaseServer, profileHelper: ProfileHelper, randomUtil: RandomUtil, itemHelper: ItemHelper, traderHelper: TraderHelper, weightedRandomHelper: WeightedRandomHelper, paymentService: PaymentService, repairHelper: RepairHelper, localisationService: LocalisationService, configServer: ConfigServer); + constructor(logger: ILogger, databaseService: DatabaseService, profileHelper: ProfileHelper, randomUtil: RandomUtil, itemHelper: ItemHelper, traderHelper: TraderHelper, weightedRandomHelper: WeightedRandomHelper, paymentService: PaymentService, repairHelper: RepairHelper, localisationService: LocalisationService, configServer: ConfigServer); /** * Use trader to repair an items durability * @param sessionID Session id @@ -82,11 +83,11 @@ export declare class RepairService { protected getKitDivisor(itemToRepairDetails: ITemplateItem, isArmor: boolean, pmcData: IPmcData): number; /** * Get the bonus multiplier for a skill from a player profile - * @param skillBonusName Name of bonus to get multipler of + * @param skillBonus Bonus to get multipler of * @param pmcData Player profile to look in for skill * @returns Multiplier value */ - protected getBonusMultiplierValue(skillBonusName: string, pmcData: IPmcData): number; + protected getBonusMultiplierValue(skillBonus: BonusType, pmcData: IPmcData): number; /** * Should a repair kit apply total durability loss on repair * @param pmcData Player profile @@ -125,12 +126,12 @@ export declare class RepairService { * @param itemTemplate Item to check for skill * @returns Skill name */ - protected getItemSkillType(itemTemplate: ITemplateItem): SkillTypes; + protected getItemSkillType(itemTemplate: ITemplateItem): SkillTypes | undefined; /** * Ensure multiplier is between 1 and 0.01 - * @param receiveDurabilityMaxPercent Max durabiltiy percent + * @param receiveDurabilityMaxPercent Max durability percent * @param receiveDurabilityPercent current durability percent - * @returns durability multipler value + * @returns durability multiplier value */ protected getDurabilityMultiplier(receiveDurabilityMaxPercent: number, receiveDurabilityPercent: number): number; } diff --git a/TypeScript/23CustomAbstractChatBot/types/services/SeasonalEventService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/SeasonalEventService.d.ts index 3e20409..0750f38 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/SeasonalEventService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/SeasonalEventService.d.ts @@ -1,20 +1,22 @@ -import { BotHelper } from "@spt-aki/helpers/BotHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { IConfig } from "@spt-aki/models/eft/common/IGlobals"; -import { Inventory } from "@spt-aki/models/eft/common/tables/IBotType"; -import { SeasonalEventType } from "@spt-aki/models/enums/SeasonalEventType"; -import { IHttpConfig } from "@spt-aki/models/spt/config/IHttpConfig"; -import { IQuestConfig } from "@spt-aki/models/spt/config/IQuestConfig"; -import { ISeasonalEvent, ISeasonalEventConfig } from "@spt-aki/models/spt/config/ISeasonalEventConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { GiftService } from "@spt-aki/services/GiftService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { DatabaseImporter } from "@spt-aki/utils/DatabaseImporter"; +import { BotHelper } from "@spt/helpers/BotHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IConfig } from "@spt/models/eft/common/IGlobals"; +import { Inventory } from "@spt/models/eft/common/tables/IBotType"; +import { Season } from "@spt/models/enums/Season"; +import { SeasonalEventType } from "@spt/models/enums/SeasonalEventType"; +import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; +import { IQuestConfig } from "@spt/models/spt/config/IQuestConfig"; +import { ISeasonalEvent, ISeasonalEventConfig } from "@spt/models/spt/config/ISeasonalEventConfig"; +import { IWeatherConfig } from "@spt/models/spt/config/IWeatherConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { GiftService } from "@spt/services/GiftService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { DatabaseImporter } from "@spt/utils/DatabaseImporter"; export declare class SeasonalEventService { protected logger: ILogger; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected databaseImporter: DatabaseImporter; protected giftService: GiftService; protected localisationService: LocalisationService; @@ -24,9 +26,12 @@ export declare class SeasonalEventService { protected seasonalEventConfig: ISeasonalEventConfig; protected questConfig: IQuestConfig; protected httpConfig: IHttpConfig; - protected halloweenEventActive: any; - protected christmasEventActive: any; - constructor(logger: ILogger, databaseServer: DatabaseServer, databaseImporter: DatabaseImporter, giftService: GiftService, localisationService: LocalisationService, botHelper: BotHelper, profileHelper: ProfileHelper, configServer: ConfigServer); + protected weatherConfig: IWeatherConfig; + protected halloweenEventActive?: boolean; + protected christmasEventActive?: boolean; + /** All events active at this point in time */ + protected currentlyActiveEvents: SeasonalEventType[]; + constructor(logger: ILogger, databaseService: DatabaseService, databaseImporter: DatabaseImporter, giftService: GiftService, localisationService: LocalisationService, botHelper: BotHelper, profileHelper: ProfileHelper, configServer: ConfigServer); protected get christmasEventItems(): string[]; protected get halloweenEventItems(): string[]; /** @@ -48,11 +53,12 @@ export declare class SeasonalEventService { */ itemIsSeasonalRelated(itemTpl: string): boolean; /** - * Get an array of items that appear during a seasonal event - * returns multiple seasonal event items if they are both active + * 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 * @returns array of tpl strings */ - getAllSeasonalEventItems(): string[]; + getInactiveSeasonalEventItems(): string[]; /** * Is a seasonal event currently active * @returns true if event is active @@ -97,12 +103,13 @@ export declare class SeasonalEventService { */ enableSeasonalEvents(sessionId: string): void; protected cacheActiveEvents(): void; + getActiveWeatherSeason(): Season; /** * Iterate through bots inventory and loot to find and remove christmas items (as defined in SeasonalEventService) - * @param nodeInventory Bots inventory to iterate over + * @param botInventory Bots inventory to iterate over * @param botRole the role of the bot being processed */ - removeChristmasItemsFromBotInventory(nodeInventory: Inventory, botRole: string): void; + removeChristmasItemsFromBotInventory(botInventory: Inventory, botRole: string): void; /** * Make adjusted to server code based on the name of the event passed in * @param sessionId Player id @@ -110,6 +117,9 @@ export declare class SeasonalEventService { * @param eventName Name of the event to enable. e.g. Christmas */ protected updateGlobalEvents(sessionId: string, globalConfig: IConfig, eventType: SeasonalEventType): void; + protected adjustZryachiyMeleeChance(): void; + protected enableHalloweenSummonEvent(): void; + protected addEventBossesToMaps(eventType: SeasonalEventType): void; /** * Change trader icons to be more event themed (Halloween only so far) * @param eventType What event is active @@ -136,7 +146,14 @@ export declare class SeasonalEventService { /** * Send gift to player if they'e not already received it * @param playerId Player to send gift to - * @param giftkey Key of gift to give + * @param giftKey Key of gift to give */ - protected giveGift(playerId: string, giftkey: string): void; + protected giveGift(playerId: string, giftKey: string): void; + /** + * Get the underlying bot type for an event bot e.g. `peacefullZryachiyEvent` will return `bossZryachiy` + * @param eventBotRole Event bot role type + * @returns Bot role as string + */ + getBaseRoleForEventBot(eventBotRole: string): string; + enableSnow(): void; } diff --git a/TypeScript/23CustomAbstractChatBot/types/services/TraderAssortService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/TraderAssortService.d.ts index 9130de6..48af0b7 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/TraderAssortService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/TraderAssortService.d.ts @@ -1,4 +1,4 @@ -import { ITraderAssort } from "@spt-aki/models/eft/common/tables/ITrader"; +import { ITraderAssort } from "@spt/models/eft/common/tables/ITrader"; export declare class TraderAssortService { protected pristineTraderAssorts: Record; getPristineTraderAssort(traderId: string): ITraderAssort; diff --git a/TypeScript/23CustomAbstractChatBot/types/services/TraderPurchasePersisterService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/TraderPurchasePersisterService.d.ts index cd7518c..6bef9f5 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/TraderPurchasePersisterService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/TraderPurchasePersisterService.d.ts @@ -1,28 +1,38 @@ -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { TraderPurchaseData } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { ITraderConfig } from "@spt-aki/models/spt/config/ITraderConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderPurchaseData } from "@spt/models/eft/profile/ISptProfile"; +import { ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; /** * Help with storing limited item purchases from traders in profile to persist them over server restarts */ export declare class TraderPurchasePersisterService { protected logger: ILogger; protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; protected profileHelper: ProfileHelper; protected localisationService: LocalisationService; protected configServer: ConfigServer; protected traderConfig: ITraderConfig; - constructor(logger: ILogger, timeUtil: TimeUtil, profileHelper: ProfileHelper, localisationService: LocalisationService, configServer: ConfigServer); + constructor(logger: ILogger, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, localisationService: LocalisationService, configServer: ConfigServer); /** * Get the purchases made from a trader for this profile before the last trader reset * @param sessionId Session id * @param traderId Trader to loop up purchases for * @returns Dict of assort id and count purchased */ - getProfileTraderPurchases(sessionId: string, traderId: string): Record; + getProfileTraderPurchases(sessionId: string, traderId: string): Record | undefined; + /** + * Get a purchase made from a trader for requested profile before the last trader reset + * @param sessionId Session id + * @param traderId Trader to loop up purchases for + * @param assortId Id of assort to get data for + * @returns TraderPurchaseData + */ + getProfileTraderPurchase(sessionId: string, traderId: string, assortId: string): TraderPurchaseData | undefined; /** * Remove all trader purchase records from all profiles that exist * @param traderId Traders id diff --git a/TypeScript/23CustomAbstractChatBot/types/services/TraderServicesService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/TraderServicesService.d.ts new file mode 100644 index 0000000..e441eb6 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/services/TraderServicesService.d.ts @@ -0,0 +1,13 @@ +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class TraderServicesService { + protected profileHelper: ProfileHelper; + protected logger: ILogger; + protected databaseService: DatabaseService; + protected cloner: ICloner; + constructor(profileHelper: ProfileHelper, logger: ILogger, databaseService: DatabaseService, cloner: ICloner); + getTraderServices(sessionId: string, traderId: string): ITraderServiceModel[]; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/services/cache/BundleHashCacheService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/cache/BundleHashCacheService.d.ts new file mode 100644 index 0000000..f8289c2 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/services/cache/BundleHashCacheService.d.ts @@ -0,0 +1,18 @@ +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { JsonUtil } from "@spt/utils/JsonUtil"; +import { VFS } from "@spt/utils/VFS"; +export declare class BundleHashCacheService { + protected vfs: VFS; + protected hashUtil: HashUtil; + protected jsonUtil: JsonUtil; + protected logger: ILogger; + protected bundleHashes: Record; + protected readonly bundleHashCachePath = "./user/cache/bundleHashCache.json"; + constructor(vfs: VFS, hashUtil: HashUtil, jsonUtil: JsonUtil, logger: ILogger); + getStoredValue(key: string): number; + storeValue(key: string, value: number): void; + matchWithStoredHash(bundlePath: string, hash: number): boolean; + calculateAndMatchHash(bundlePath: string): boolean; + calculateAndStoreHash(bundlePath: string): void; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/services/cache/ModHashCacheService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/cache/ModHashCacheService.d.ts new file mode 100644 index 0000000..3cb8ff8 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/services/cache/ModHashCacheService.d.ts @@ -0,0 +1,18 @@ +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { JsonUtil } from "@spt/utils/JsonUtil"; +import { VFS } from "@spt/utils/VFS"; +export declare class ModHashCacheService { + protected vfs: VFS; + protected hashUtil: HashUtil; + protected jsonUtil: JsonUtil; + protected logger: ILogger; + protected modHashes: Record; + protected readonly modCachePath = "./user/cache/modCache.json"; + constructor(vfs: VFS, hashUtil: HashUtil, jsonUtil: JsonUtil, logger: ILogger); + getStoredValue(key: string): string; + storeValue(key: string, value: string): void; + matchWithStoredHash(modName: string, hash: string): boolean; + calculateAndCompareHash(modName: string, modContent: string): boolean; + calculateAndStoreHash(modName: string, modContent: string): void; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/services/mod/CustomItemService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/mod/CustomItemService.d.ts index 29329dc..1926bed 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/mod/CustomItemService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/mod/CustomItemService.d.ts @@ -1,19 +1,19 @@ -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { ITemplateItem, Props } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { CreateItemResult, LocaleDetails, NewItemDetails, NewItemFromCloneDetails } from "@spt-aki/models/spt/mod/NewItemDetails"; -import { IDatabaseTables } from "@spt-aki/models/spt/server/IDatabaseTables"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { ITemplateItem, Props } from "@spt/models/eft/common/tables/ITemplateItem"; +import { CreateItemResult, LocaleDetails, NewItemDetails, NewItemFromCloneDetails } from "@spt/models/spt/mod/NewItemDetails"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { ItemBaseClassService } from "@spt/services/ItemBaseClassService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; export declare class CustomItemService { protected logger: ILogger; protected hashUtil: HashUtil; - protected jsonUtil: JsonUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected itemHelper: ItemHelper; - protected tables: IDatabaseTables; - constructor(logger: ILogger, hashUtil: HashUtil, jsonUtil: JsonUtil, databaseServer: DatabaseServer, itemHelper: ItemHelper); + protected itemBaseClassService: ItemBaseClassService; + protected cloner: ICloner; + constructor(logger: ILogger, hashUtil: HashUtil, databaseService: DatabaseService, itemHelper: ItemHelper, itemBaseClassService: ItemBaseClassService, cloner: ICloner); /** * Create a new item from a cloned item base * 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 @@ -79,6 +79,11 @@ export declare class CustomItemService { * @param fleaPriceRoubles Price of the new item */ protected addToFleaPriceDb(newItemId: string, fleaPriceRoubles: number): void; + /** + * Add a weapon to the hideout weapon shelf whitelist + * @param newItemId Weapon id to add + */ + protected addToWeaponShelf(newItemId: string): void; /** * Add a custom weapon to PMCs loadout * @param weaponTpl Custom weapon tpl to add to PMCs diff --git a/TypeScript/23CustomAbstractChatBot/types/services/mod/dynamicRouter/DynamicRouterMod.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/mod/dynamicRouter/DynamicRouterMod.d.ts index 5eed5b4..bb969b3 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/mod/dynamicRouter/DynamicRouterMod.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/mod/dynamicRouter/DynamicRouterMod.d.ts @@ -1,4 +1,4 @@ -import { DynamicRouter, RouteAction } from "@spt-aki/di/Router"; +import { DynamicRouter, RouteAction } from "@spt/di/Router"; export declare class DynamicRouterMod extends DynamicRouter { private topLevelRoute; constructor(routes: RouteAction[], topLevelRoute: string); diff --git a/TypeScript/23CustomAbstractChatBot/types/services/mod/dynamicRouter/DynamicRouterModService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/mod/dynamicRouter/DynamicRouterModService.d.ts index 648d191..3c9d955 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/mod/dynamicRouter/DynamicRouterModService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/mod/dynamicRouter/DynamicRouterModService.d.ts @@ -1,5 +1,5 @@ import { DependencyContainer } from "tsyringe"; -import { RouteAction } from "@spt-aki/di/Router"; +import { RouteAction } from "@spt/di/Router"; export declare class DynamicRouterModService { private container; constructor(container: DependencyContainer); diff --git a/TypeScript/23CustomAbstractChatBot/types/services/mod/httpListener/HttpListenerMod.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/mod/httpListener/HttpListenerMod.d.ts index ebfa946..75e42ee 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/mod/httpListener/HttpListenerMod.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/mod/httpListener/HttpListenerMod.d.ts @@ -1,10 +1,10 @@ /// import { IncomingMessage, ServerResponse } from "node:http"; -import { IHttpListener } from "@spt-aki/servers/http/IHttpListener"; +import { IHttpListener } from "@spt/servers/http/IHttpListener"; export declare class HttpListenerMod implements IHttpListener { private canHandleOverride; private handleOverride; constructor(canHandleOverride: (sessionId: string, req: IncomingMessage) => boolean, handleOverride: (sessionId: string, req: IncomingMessage, resp: ServerResponse) => void); canHandle(sessionId: string, req: IncomingMessage): boolean; - handle(sessionId: string, req: IncomingMessage, resp: ServerResponse): void; + handle(sessionId: string, req: IncomingMessage, resp: ServerResponse): Promise; } diff --git a/TypeScript/23CustomAbstractChatBot/types/services/mod/onLoad/OnLoadMod.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/mod/onLoad/OnLoadMod.d.ts index 2bd5a31..6544704 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/mod/onLoad/OnLoadMod.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/mod/onLoad/OnLoadMod.d.ts @@ -1,4 +1,4 @@ -import { OnLoad } from "@spt-aki/di/OnLoad"; +import { OnLoad } from "@spt/di/OnLoad"; export declare class OnLoadMod implements OnLoad { private onLoadOverride; private getRouteOverride; diff --git a/TypeScript/23CustomAbstractChatBot/types/services/mod/onUpdate/OnUpdateMod.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/mod/onUpdate/OnUpdateMod.d.ts index bef1d1c..3a8a26f 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/mod/onUpdate/OnUpdateMod.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/mod/onUpdate/OnUpdateMod.d.ts @@ -1,4 +1,4 @@ -import { OnUpdate } from "@spt-aki/di/OnUpdate"; +import { OnUpdate } from "@spt/di/OnUpdate"; export declare class OnUpdateMod implements OnUpdate { private onUpdateOverride; private getRouteOverride; diff --git a/TypeScript/23CustomAbstractChatBot/types/services/mod/staticRouter/StaticRouterMod.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/mod/staticRouter/StaticRouterMod.d.ts index e01aaab..48bf4a1 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/mod/staticRouter/StaticRouterMod.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/mod/staticRouter/StaticRouterMod.d.ts @@ -1,4 +1,4 @@ -import { RouteAction, StaticRouter } from "@spt-aki/di/Router"; +import { RouteAction, StaticRouter } from "@spt/di/Router"; export declare class StaticRouterMod extends StaticRouter { private topLevelRoute; constructor(routes: RouteAction[], topLevelRoute: string); diff --git a/TypeScript/23CustomAbstractChatBot/types/services/mod/staticRouter/StaticRouterModService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/mod/staticRouter/StaticRouterModService.d.ts index 775caae..f60432d 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/mod/staticRouter/StaticRouterModService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/mod/staticRouter/StaticRouterModService.d.ts @@ -1,5 +1,5 @@ import { DependencyContainer } from "tsyringe"; -import { RouteAction } from "@spt-aki/di/Router"; +import { RouteAction } from "@spt/di/Router"; export declare class StaticRouterModService { protected container: DependencyContainer; constructor(container: DependencyContainer); diff --git a/TypeScript/23CustomAbstractChatBot/types/tools/ItemTplGenerator/ItemTplGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/tools/ItemTplGenerator/ItemTplGenerator.d.ts new file mode 100644 index 0000000..409909f --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/tools/ItemTplGenerator/ItemTplGenerator.d.ts @@ -0,0 +1,81 @@ +/** + * Dynamically generate the following two files: + * - src/models/enums/ItemTpl.ts + * - src/models/enums/Weapons.ts + * + * Based on data from the assets/database folders. + * + * Usage: + * - Run this script using npm: `npm run gen:items` + * + * Notes: + * - Ensure that all necessary Node.js modules are installed before running the script: `npm install` + * - The following rules are used for determining item base names: + * -- Certain items are manually overridden by itemOverrides.ts, when the names are not unique enough + * -- Random containers, built in inserts and stashes utilize the item's _name property + * -- Ammo, ammo boxes, and magazines utilize the item's English locale ShortName property + * -- All other items utilize the item's English locale Name property + * -- In the event the above rules fail, the fallback order is the Englick locale Name property, then the item's _name property + * -- Trailing and leading whitespace is stripped, special characters are removed, and spaces are replaced with underscores + * - Item caliber data is cleaned of the words "CALIBER", "PARA" and "NATO", as well as replacing "1143x23ACP" with "45ACP" for consistency + * - Damaged ammo boxes are suffixed with "_DAMAGED" + * - The parent item type prefix is grouped more than the base item list, see "getParentName" for the rules around this + * - Finalized enum names are created as a combination of the parent name, prefix, item name, and suffix + */ +import { OnLoad } from "@spt/di/OnLoad"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { LocaleService } from "@spt/services/LocaleService"; +export declare class ItemTplGenerator { + protected databaseServer: DatabaseServer; + protected localeService: LocaleService; + protected logger: ILogger; + protected itemHelper: ItemHelper; + protected onLoadComponents: OnLoad[]; + private enumDir; + private items; + private itemOverrides; + private collidedEnumKeys; + constructor(databaseServer: DatabaseServer, localeService: LocaleService, logger: ILogger, itemHelper: ItemHelper, onLoadComponents: OnLoad[]); + run(): Promise; + /** + * Return an object containing all items in the game with a generated name + * @returns An object containing a generated item name to item ID association + */ + private generateItemsObject; + /** + * + * @param orderedItemsObject The previously generated object of item name to item ID associations + * @returns + */ + private generateWeaponsObject; + /** + * Clear any non-alpha numeric characters, and fix multiple underscores + * @param enumKey The enum key to sanitize + * @returns The sanitized enum key + */ + private sanitizeEnumKey; + private getParentName; + private isValidItem; + /** + * Generate a prefix for the passed in item + * @param item The item to generate the prefix for + * @returns The prefix of the given item + */ + private getItemPrefix; + private getItemSuffix; + private getAmmoPrefix; + private cleanCaliber; + private getAmmoBoxPrefix; + private getMagazinePrefix; + /** + * Return the name of the passed in item, formatted for use in an enum + * @param item The item to generate the name for + * @returns The name of the given item + */ + private getItemName; + private getItemNameSuffix; + private logEnumValueChanges; + private writeEnumsToFile; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/tools/ItemTplGenerator/ItemTplGeneratorProgram.d.ts b/TypeScript/23CustomAbstractChatBot/types/tools/ItemTplGenerator/ItemTplGeneratorProgram.d.ts new file mode 100644 index 0000000..994bef8 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/tools/ItemTplGenerator/ItemTplGeneratorProgram.d.ts @@ -0,0 +1,7 @@ +import "reflect-metadata"; +import "source-map-support/register"; +export declare class ItemTplGeneratorProgram { + private errorHandler; + constructor(); + start(): Promise; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/tools/ItemTplGenerator/itemOverrides.d.ts b/TypeScript/23CustomAbstractChatBot/types/tools/ItemTplGenerator/itemOverrides.d.ts new file mode 100644 index 0000000..fb2ba9a --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/tools/ItemTplGenerator/itemOverrides.d.ts @@ -0,0 +1,75 @@ +/** + * An object containing item name overrides for use with ItemTplGenerator + */ +declare const _default: { + "5963866b86f7747bfa1c4462": string; + "5963866286f7747bf429b572": string; + "614451b71e5874611e2c7ae5": string; + "557ffd194bdc2d28148b457f": string; + "627a4e6b255f7527fb05a0f6": string; + "65e080be269cbd5c5005e529": string; + "64cbd95a29b9b4283e216ff5": string; + "665ee77ccf2d642e98220bca": string; + "6662e9f37fa79a6d83730fa0": string; + "6662ea05f6259762c56f3189": string; + "6662e9aca7e0b43baa3d5f74": string; + "6662e9cda7e0b43baa3d5f76": string; + "590de92486f77423d9312a33": string; + "5937fc6786f7742cab753590": string; + "5937fd0086f7742bf33fc198": string; + "638cbb3ba63f1b49be6a300e": string; + "5eff135be0d3331e9d282b7b": string; + "638e9d5536b3b72c944e2fc7": string; + "5a29357286f77409c705e025": string; + "5939e9b286f77462a709572c": string; + "591093bb86f7747caa7bb2ee": string; + "61904c9df62c89219a56e034": string; + "638cbc68a63f1b49be6a3010": string; + "619252352be33f26043400a7": string; + "5a29284f86f77463ef3db363": string; + "64b91627dd13d43b9d01d6d1": string; + "5a29276886f77435ed1b117c": string; + "628393620d8524273e7eb028": string; + "638dfc803083a019d447768e": string; + "638e0057ab150a5f56238960": string; + "6393262086e646067c176aa2": string; + "63989ced706b793c7d60cfef": string; + "6398a072e301557ae24cec92": string; + "6398a0861c712b1e1d4dadf1": string; + "638e0752ab150a5f56238962": string; + "638e06c4b8bac37a110ed56d": string; + "63927b29c115f907b14700b9": string; + "5939e5a786f77461f11c0098": string; + "591092ef86f7747bb8703422": string; + "5938188786f77474f723e87f": string; + "593965cf86f774087a77e1b6": string; + "5938878586f7741b797c562f": string; + "5a6860d886f77411cd3a9e47": string; + "638cbb0f7f97256fac16167a": string; + "664a5775f3d3570fba06be64": string; + "664b69c5a082271bc46c4e11": string; + "664b69e8e1238e506d3630af": string; + "6575a6ca8778e96ded05a802": string; + "6614217b6d9d5abcad0ff098": string; + "6614230055afee107f05e998": string; + "661421c7c1f2f548c50ee649": string; + "661423200d240a5f5d0f679b": string; + "5d1340b3d7ad1a0b52682ed7": string; + "55802d5f4bdc2dac148b458e": string; + "5d1340cad7ad1a0b0b249869": string; + "5d1340bdd7ad1a0e8d245aab": string; + "5cbdaf89ae9215000e5b9c94": string; + "5e21a3c67e40bd02257a008a": string; + "5914944186f774189e5e76c2": string; + "5937ef2b86f77408a47244b3": string; + "59387ac686f77401442ddd61": string; + "61aa1e9a32a4743c3453d2cf": string; + "61aa1ead84ea0800645777fd": string; + "5b6d9ce188a4501afc1b2b25": string; + "5c0a840b86f7742ffa4f2482": string; + "5d235bb686f77443f4331278": string; + "5e81ebcd8e146c7080625e15": string; + "639c3fbbd0446708ee622ee9": string; + "639af924d0446708ee62294e": string; +}; +export default _default; diff --git a/TypeScript/23CustomAbstractChatBot/types/utils/App.d.ts b/TypeScript/23CustomAbstractChatBot/types/utils/App.d.ts index 64800ce..211044e 100644 --- a/TypeScript/23CustomAbstractChatBot/types/utils/App.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/utils/App.d.ts @@ -1,22 +1,24 @@ -import { OnLoad } from "@spt-aki/di/OnLoad"; -import { OnUpdate } from "@spt-aki/di/OnUpdate"; -import { ICoreConfig } from "@spt-aki/models/spt/config/ICoreConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { EncodingUtil } from "@spt-aki/utils/EncodingUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { OnLoad } from "@spt/di/OnLoad"; +import { OnUpdate } from "@spt/di/OnUpdate"; +import { ICoreConfig } from "@spt/models/spt/config/ICoreConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { HttpServer } from "@spt/servers/HttpServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { EncodingUtil } from "@spt/utils/EncodingUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class App { protected logger: ILogger; protected timeUtil: TimeUtil; protected localisationService: LocalisationService; protected configServer: ConfigServer; protected encodingUtil: EncodingUtil; + protected httpServer: HttpServer; protected onLoadComponents: OnLoad[]; protected onUpdateComponents: OnUpdate[]; protected onUpdateLastRun: {}; protected coreConfig: ICoreConfig; - constructor(logger: ILogger, timeUtil: TimeUtil, localisationService: LocalisationService, configServer: ConfigServer, encodingUtil: EncodingUtil, onLoadComponents: OnLoad[], onUpdateComponents: OnUpdate[]); + constructor(logger: ILogger, timeUtil: TimeUtil, localisationService: LocalisationService, configServer: ConfigServer, encodingUtil: EncodingUtil, httpServer: HttpServer, onLoadComponents: OnLoad[], onUpdateComponents: OnUpdate[]); load(): Promise; protected update(onUpdateComponents: OnUpdate[]): Promise; protected logUpdateException(err: any, updateable: OnUpdate): void; diff --git a/TypeScript/23CustomAbstractChatBot/types/utils/AsyncQueue.d.ts b/TypeScript/23CustomAbstractChatBot/types/utils/AsyncQueue.d.ts index 2fab517..a14181d 100644 --- a/TypeScript/23CustomAbstractChatBot/types/utils/AsyncQueue.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/utils/AsyncQueue.d.ts @@ -1,5 +1,5 @@ -import { IAsyncQueue } from "@spt-aki/models/spt/utils/IAsyncQueue"; -import { ICommand } from "@spt-aki/models/spt/utils/ICommand"; +import { IAsyncQueue } from "@spt/models/spt/utils/IAsyncQueue"; +import { ICommand } from "@spt/models/spt/utils/ICommand"; export declare class AsyncQueue implements IAsyncQueue { protected commandsQueue: ICommand[]; constructor(); diff --git a/TypeScript/23CustomAbstractChatBot/types/utils/CompareUtil.d.ts b/TypeScript/23CustomAbstractChatBot/types/utils/CompareUtil.d.ts new file mode 100644 index 0000000..a5b94d5 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/utils/CompareUtil.d.ts @@ -0,0 +1,11 @@ +export declare class CompareUtil { + private static typesToCheckAgainst; + /** + * This function does an object comparison, equivalent to applying reflections + * and scanning for all possible properties including arrays. + * @param v1 value 1 to compare + * @param v2 value 2 to compare + * @returns true if equal, false if not + */ + recursiveCompare(v1: any, v2: any): boolean; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/utils/DatabaseImporter.d.ts b/TypeScript/23CustomAbstractChatBot/types/utils/DatabaseImporter.d.ts index f8218bf..4005d46 100644 --- a/TypeScript/23CustomAbstractChatBot/types/utils/DatabaseImporter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/utils/DatabaseImporter.d.ts @@ -1,15 +1,15 @@ -import { OnLoad } from "@spt-aki/di/OnLoad"; -import { IHttpConfig } from "@spt-aki/models/spt/config/IHttpConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ImageRouter } from "@spt-aki/routers/ImageRouter"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { EncodingUtil } from "@spt-aki/utils/EncodingUtil"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { ImporterUtil } from "@spt-aki/utils/ImporterUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { VFS } from "@spt-aki/utils/VFS"; +import { OnLoad } from "@spt/di/OnLoad"; +import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ImageRouter } from "@spt/routers/ImageRouter"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { EncodingUtil } from "@spt/utils/EncodingUtil"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { ImporterUtil } from "@spt/utils/ImporterUtil"; +import { JsonUtil } from "@spt/utils/JsonUtil"; +import { VFS } from "@spt/utils/VFS"; export declare class DatabaseImporter implements OnLoad { protected logger: ILogger; protected vfs: VFS; @@ -27,7 +27,7 @@ export declare class DatabaseImporter implements OnLoad { protected httpConfig: IHttpConfig; constructor(logger: ILogger, vfs: VFS, jsonUtil: JsonUtil, localisationService: LocalisationService, databaseServer: DatabaseServer, imageRouter: ImageRouter, encodingUtil: EncodingUtil, hashUtil: HashUtil, importerUtil: ImporterUtil, configServer: ConfigServer); /** - * Get path to aki data + * Get path to spt data * @returns path to data */ getSptDataPath(): string; diff --git a/TypeScript/23CustomAbstractChatBot/types/utils/HashUtil.d.ts b/TypeScript/23CustomAbstractChatBot/types/utils/HashUtil.d.ts index c51fb5c..427c186 100644 --- a/TypeScript/23CustomAbstractChatBot/types/utils/HashUtil.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/utils/HashUtil.d.ts @@ -1,6 +1,8 @@ /// +/// import crypto from "node:crypto"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import fs from "node:fs"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class HashUtil { protected timeUtil: TimeUtil; constructor(timeUtil: TimeUtil); @@ -11,6 +13,7 @@ export declare class HashUtil { generate(): string; generateMd5ForData(data: string): string; generateSha1ForData(data: string): string; + generateCRC32ForFile(filePath: fs.PathLike): number; /** * Create a hash for the data parameter * @param algorithm algorithm to use to hash diff --git a/TypeScript/23CustomAbstractChatBot/types/utils/HttpFileUtil.d.ts b/TypeScript/23CustomAbstractChatBot/types/utils/HttpFileUtil.d.ts index 4296fe4..cc0d9ef 100644 --- a/TypeScript/23CustomAbstractChatBot/types/utils/HttpFileUtil.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/utils/HttpFileUtil.d.ts @@ -1,8 +1,8 @@ /// import { ServerResponse } from "node:http"; -import { HttpServerHelper } from "@spt-aki/helpers/HttpServerHelper"; +import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; export declare class HttpFileUtil { protected httpServerHelper: HttpServerHelper; constructor(httpServerHelper: HttpServerHelper); - sendFile(resp: ServerResponse, file: any): void; + sendFile(resp: ServerResponse, filePath: string): void; } diff --git a/TypeScript/23CustomAbstractChatBot/types/utils/HttpResponseUtil.d.ts b/TypeScript/23CustomAbstractChatBot/types/utils/HttpResponseUtil.d.ts index 9868c1e..ff84544 100644 --- a/TypeScript/23CustomAbstractChatBot/types/utils/HttpResponseUtil.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/utils/HttpResponseUtil.d.ts @@ -1,9 +1,9 @@ -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { INullResponseData } from "@spt-aki/models/eft/httpResponse/INullResponseData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { BackendErrorCodes } from "@spt-aki/models/enums/BackendErrorCodes"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { INullResponseData } from "@spt/models/eft/httpResponse/INullResponseData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { BackendErrorCodes } from "@spt/models/enums/BackendErrorCodes"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { JsonUtil } from "@spt/utils/JsonUtil"; export declare class HttpResponseUtil { protected jsonUtil: JsonUtil; protected localisationService: LocalisationService; @@ -22,10 +22,17 @@ export declare class HttpResponseUtil { * @param errmsg * @returns */ - getBody(data: T, err?: number, errmsg?: any, sanitize?: boolean): IGetBodyResponseData; - getUnclearedBody(data: any, err?: number, errmsg?: any): string; + getBody(data: T, err?: number, errmsg?: string, sanitize?: boolean): IGetBodyResponseData; + getUnclearedBody(data: any, err?: number, errmsg?: string): string; emptyResponse(): IGetBodyResponseData; nullResponse(): INullResponseData; emptyArrayResponse(): IGetBodyResponseData; + /** + * Add an error into the 'warnings' array of the client response message + * @param output IItemEventRouterResponse + * @param message Error message + * @param errorCode Error code + * @returns IItemEventRouterResponse + */ appendErrorToOutput(output: IItemEventRouterResponse, message?: string, errorCode?: BackendErrorCodes): IItemEventRouterResponse; } diff --git a/TypeScript/23CustomAbstractChatBot/types/utils/ImporterUtil.d.ts b/TypeScript/23CustomAbstractChatBot/types/utils/ImporterUtil.d.ts index 7ce1bdb..c36bcb5 100644 --- a/TypeScript/23CustomAbstractChatBot/types/utils/ImporterUtil.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/utils/ImporterUtil.d.ts @@ -1,5 +1,5 @@ -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { VFS } from "@spt-aki/utils/VFS"; +import { JsonUtil } from "@spt/utils/JsonUtil"; +import { VFS } from "@spt/utils/VFS"; export declare class ImporterUtil { protected vfs: VFS; protected jsonUtil: JsonUtil; diff --git a/TypeScript/23CustomAbstractChatBot/types/utils/JsonUtil.d.ts b/TypeScript/23CustomAbstractChatBot/types/utils/JsonUtil.d.ts index befc3cb..b30822c 100644 --- a/TypeScript/23CustomAbstractChatBot/types/utils/JsonUtil.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/utils/JsonUtil.d.ts @@ -1,12 +1,12 @@ import { IParseOptions, IStringifyOptions, Reviver } from "jsonc/lib/interfaces"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { VFS } from "@spt-aki/utils/VFS"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { VFS } from "@spt/utils/VFS"; export declare class JsonUtil { protected vfs: VFS; protected hashUtil: HashUtil; protected logger: ILogger; - protected fileHashes: any; + protected fileHashes?: Map; protected jsonCacheExists: boolean; protected jsonCachePath: string; constructor(vfs: VFS, hashUtil: HashUtil, logger: ILogger); @@ -32,15 +32,15 @@ export declare class JsonUtil { * @param options Stringify options or a replacer. * @returns The string converted from the JavaScript value */ - serializeJsonC(data: any, filename?: string | null, options?: IStringifyOptions | Reviver): string; - serializeJson5(data: any, filename?: string | null, prettify?: boolean): string; + serializeJsonC(data: any, filename?: string | undefined, options?: IStringifyOptions | Reviver): string | undefined; + serializeJson5(data: any, filename?: string | undefined, prettify?: boolean): string | undefined; /** * From string to object * @param jsonString json string to turn into object * @param filename Name of file being deserialized * @returns object */ - deserialize(jsonString: string, filename?: string): T; + deserialize(jsonString: string, filename?: string): T | undefined; /** * From string to object * @param jsonString json string to turn into object @@ -48,16 +48,17 @@ export declare class JsonUtil { * @param options Parsing options * @returns object */ - deserializeJsonC(jsonString: string, filename?: string, options?: IParseOptions): T; - deserializeJson5(jsonString: string, filename?: string): T; - deserializeWithCacheCheckAsync(jsonString: string, filePath: string): Promise; + deserializeJsonC(jsonString: string, filename?: string, options?: IParseOptions): T | undefined; + deserializeJson5(jsonString: string, filename?: string): T | undefined; + deserializeWithCacheCheckAsync(jsonString: string, filePath: string): Promise; /** - * From json string to object + * Take json from file and convert into object + * Perform valadation on json during process if json file has not been processed before * @param jsonString String to turn into object * @param filePath Path to json file being processed * @returns Object */ - deserializeWithCacheCheck(jsonString: string, filePath: string): T; + deserializeWithCacheCheck(jsonString: string, filePath: string): T | undefined; /** * Create file if nothing found * @param jsonCachePath path to cache @@ -72,6 +73,7 @@ export declare class JsonUtil { * Convert into string and back into object to clone object * @param objectToClone Item to clone * @returns Cloned parameter + * @deprecated Use ICloner implementations, such as RecursiveCloner or StructuredCloner */ clone(objectToClone: T): T; } diff --git a/TypeScript/23CustomAbstractChatBot/types/utils/MathUtil.d.ts b/TypeScript/23CustomAbstractChatBot/types/utils/MathUtil.d.ts index 4acfeaf..fdf9a17 100644 --- a/TypeScript/23CustomAbstractChatBot/types/utils/MathUtil.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/utils/MathUtil.d.ts @@ -49,5 +49,5 @@ export declare class MathUtil { * @param {array} y support points in y (of same length as x) * @return {number} y(xp) */ - interp1(xp: number, x: number[], y: number[]): number; + interp1(xp: number, x: number[], y: number[]): number | undefined; } diff --git a/TypeScript/23CustomAbstractChatBot/types/utils/ObjectId.d.ts b/TypeScript/23CustomAbstractChatBot/types/utils/ObjectId.d.ts index 309354f..91f64d3 100644 --- a/TypeScript/23CustomAbstractChatBot/types/utils/ObjectId.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/utils/ObjectId.d.ts @@ -1,5 +1,5 @@ /// -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class ObjectId { protected timeUtil: TimeUtil; constructor(timeUtil: TimeUtil); diff --git a/TypeScript/23CustomAbstractChatBot/types/utils/RagfairOfferHolder.d.ts b/TypeScript/23CustomAbstractChatBot/types/utils/RagfairOfferHolder.d.ts index f3c9957..71cb4aa 100644 --- a/TypeScript/23CustomAbstractChatBot/types/utils/RagfairOfferHolder.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/utils/RagfairOfferHolder.d.ts @@ -1,18 +1,27 @@ -import { IRagfairOffer } from "@spt-aki/models/eft/ragfair/IRagfairOffer"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { RagfairServerHelper } from "@spt/helpers/RagfairServerHelper"; +import { IRagfairOffer } from "@spt/models/eft/ragfair/IRagfairOffer"; export declare class RagfairOfferHolder { + protected maxOffersPerTemplate: number; + protected ragfairServerHelper: RagfairServerHelper; + protected profileHelper: ProfileHelper; protected offersById: Map; protected offersByTemplate: Map>; protected offersByTrader: Map>; - constructor(); - getOfferById(id: string): IRagfairOffer; - getOffersByTemplate(templateId: string): Array; - getOffersByTrader(traderId: string): Array; + constructor(maxOffersPerTemplate: number, ragfairServerHelper: RagfairServerHelper, profileHelper: ProfileHelper); + getOfferById(id: string): IRagfairOffer | undefined; + getOffersByTemplate(templateId: string): Array | undefined; + getOffersByTrader(traderId: string): Array | undefined; getOffers(): Array; addOffers(offers: Array): void; addOffer(offer: IRagfairOffer): void; + /** + * Purge offer from offer cache + * @param offer Offer to remove + */ removeOffer(offer: IRagfairOffer): void; removeOffers(offers: Array): void; - removeOfferByTrader(traderId: string): void; + removeAllOffersByTrader(traderId: string): void; /** * Get an array of stale offers that are still shown to player * @returns IRagfairOffer array diff --git a/TypeScript/23CustomAbstractChatBot/types/utils/RandomUtil.d.ts b/TypeScript/23CustomAbstractChatBot/types/utils/RandomUtil.d.ts index 3552fb4..49f242d 100644 --- a/TypeScript/23CustomAbstractChatBot/types/utils/RandomUtil.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/utils/RandomUtil.d.ts @@ -1,6 +1,6 @@ -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { MathUtil } from "@spt-aki/utils/MathUtil"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { MathUtil } from "@spt/utils/MathUtil"; /** * Array of ProbabilityObjectArray which allow to randomly draw of the contained objects * based on the relative probability of each of its elements. @@ -18,8 +18,8 @@ import { MathUtil } from "@spt-aki/utils/MathUtil"; */ export declare class ProbabilityObjectArray extends Array> { private mathUtil; - private jsonUtil; - constructor(mathUtil: MathUtil, jsonUtil: JsonUtil, ...items: ProbabilityObject[]); + private cloner; + constructor(mathUtil: MathUtil, cloner: ICloner, ...items: ProbabilityObject[]); filter(callbackfn: (value: ProbabilityObject, index: number, array: ProbabilityObject[]) => any): ProbabilityObjectArray; /** * Calculates the normalized cumulative probability of the ProbabilityObjectArray's elements normalized to 1 @@ -44,7 +44,7 @@ export declare class ProbabilityObjectArray extends Array extends Array { key: K; relativeProbability: number; - data: V; + data?: V; /** * Constructor for the ProbabilityObject * @param {string} key The key of the element @@ -103,9 +103,9 @@ export declare class ProbabilityObject { constructor(key: K, relativeProbability: number, data?: V); } export declare class RandomUtil { - protected jsonUtil: JsonUtil; + protected cloner: ICloner; protected logger: ILogger; - constructor(jsonUtil: JsonUtil, logger: ILogger); + constructor(cloner: ICloner, logger: ILogger); getInt(min: number, max: number): number; getIntEx(max: number): number; getFloat(min: number, max: number): number; @@ -131,12 +131,13 @@ export declare class RandomUtil { [x: string]: any; }): any; /** - * Draw from normal distribution - * @param {number} mu Mean of the normal distribution + * Generate a normally distributed random number + * Uses the Box-Muller transform + * @param {number} mean Mean of the normal distribution * @param {number} sigma Standard deviation of the normal distribution * @returns {number} The value drawn */ - randn(mu: number, sigma: number): number; + getNormallyDistributedRandomNumber(mean: number, sigma: number, attempt?: number): number; /** * Draw Random integer low inclusive, high exclusive * if high is not set we draw from 0 to low (exclusive) @@ -149,11 +150,11 @@ export declare class RandomUtil { * Draw a random element of the provided list N times to return an array of N random elements * Drawing can be with or without replacement * @param {array} list The array we want to draw randomly from - * @param {integer} count The number of times we want to draw - * @param {boolean} replacement Draw with or without replacement from the input array(defult true) + * @param {integer} count The number of times we want to draw + * @param {boolean} replacement Draw with or without replacement from the input array(default true) * @return {array} Array consisting of N random elements */ - drawRandomFromList(list: Array, count?: number, replacement?: boolean): Array; + drawRandomFromList(originalList: Array, count?: number, replacement?: boolean): Array; /** * Draw a random (top level) element of the provided dictionary N times to return an array of N random dictionary keys * Drawing can be with or without replacement @@ -170,4 +171,12 @@ export declare class RandomUtil { * @returns Shuffled array */ shuffle(array: Array): Array; + /** + * Rolls for a probability based on chance + * @param number Probability Chance as float (0-1) + * @returns If roll succeed or not + * @example + * rollForChanceProbability(0.25); // returns true 25% probability + */ + rollForChanceProbability(probabilityChance: number): boolean; } diff --git a/TypeScript/23CustomAbstractChatBot/types/utils/TimeUtil.d.ts b/TypeScript/23CustomAbstractChatBot/types/utils/TimeUtil.d.ts index 1367e26..6c14b9d 100644 --- a/TypeScript/23CustomAbstractChatBot/types/utils/TimeUtil.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/utils/TimeUtil.d.ts @@ -1,31 +1,70 @@ /** - * Utility class to handle time related problems + * Utility class to handle time related operations. */ export declare class TimeUtil { - static readonly oneHourAsSeconds = 3600; + static readonly ONE_HOUR_AS_SECONDS = 3600; + /** + * Pads a number with a leading zero if it is less than 10. + * + * @param {number} number - The number to pad. + * @returns {string} The padded number as a string. + */ + protected pad(number: number): string; + /** + * Formats the time part of a date as a UTC string. + * + * @param {Date} date - The date to format in UTC. + * @returns {string} The formatted time as 'HH-MM-SS'. + */ formatTime(date: Date): string; + /** + * Formats the date part of a date as a UTC string. + * + * @param {Date} date - The date to format in UTC. + * @returns {string} The formatted date as 'YYYY-MM-DD'. + */ formatDate(date: Date): string; + /** + * Gets the current date as a formatted UTC string. + * + * @returns {string} The current date as 'YYYY-MM-DD'. + */ getDate(): string; + /** + * Gets the current time as a formatted UTC string. + * + * @returns {string} The current time as 'HH-MM-SS'. + */ getTime(): string; /** - * Get timestamp in seconds - * @returns + * Gets the current timestamp in seconds in UTC. + * + * @returns {number} The current timestamp in seconds since the Unix epoch in UTC. */ getTimestamp(): number; /** - * mail in eft requires time be in a specific format - * @returns current time in format: 00:00 (hh:mm) + * Get timestamp of today + passed in day count + * @param daysFromNow Days from now + */ + getTimeStampFromNowDays(daysFromNow: number): number; + /** + * Gets the current time in UTC in a format suitable for mail in EFT. + * + * @returns {string} The current time as 'HH:MM' in UTC. */ getTimeMailFormat(): string; /** - * Mail in eft requires date be in a specific format - * @returns current date in format: 00.00.0000 (dd.mm.yyyy) + * Gets the current date in UTC in a format suitable for emails in EFT. + * + * @returns {string} The current date as 'DD.MM.YYYY' in UTC. */ getDateMailFormat(): string; /** - * Convert hours into seconds - * @param hours hours to convert to seconds - * @returns number + * Converts a number of hours into seconds. + * + * @param {number} hours - The number of hours to convert. + * @returns {number} The equivalent number of seconds. */ getHoursAsSeconds(hours: number): number; + getTimestampOfNextHour(): number; } diff --git a/TypeScript/23CustomAbstractChatBot/types/utils/UUidGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/utils/UUidGenerator.d.ts deleted file mode 100644 index 0d9ad2f..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/utils/UUidGenerator.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { IUUidGenerator } from "@spt-aki/models/spt/utils/IUuidGenerator"; -export declare class UUidGenerator implements IUUidGenerator { - generate(): string; -} diff --git a/TypeScript/23CustomAbstractChatBot/types/utils/VFS.d.ts b/TypeScript/23CustomAbstractChatBot/types/utils/VFS.d.ts index eefcccb..6287a2f 100644 --- a/TypeScript/23CustomAbstractChatBot/types/utils/VFS.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/utils/VFS.d.ts @@ -1,17 +1,15 @@ /// /// -import fs from "node:fs"; import "reflect-metadata"; -import { IAsyncQueue } from "@spt-aki/models/spt/utils/IAsyncQueue"; -import { IUUidGenerator } from "@spt-aki/models/spt/utils/IUuidGenerator"; +import fs from "node:fs"; +import { IAsyncQueue } from "@spt/models/spt/utils/IAsyncQueue"; export declare class VFS { protected asyncQueue: IAsyncQueue; - protected uuidGenerator: IUUidGenerator; accessFilePromisify: (path: fs.PathLike, mode?: number) => Promise; copyFilePromisify: (src: fs.PathLike, dst: fs.PathLike, flags?: number) => Promise; mkdirPromisify: (path: fs.PathLike, options: fs.MakeDirectoryOptions & { recursive: true; - }) => Promise; + }) => Promise; readFilePromisify: (path: fs.PathLike) => Promise; writeFilePromisify: (path: fs.PathLike, data: string, options?: any) => Promise; readdirPromisify: (path: fs.PathLike, options?: BufferEncoding | { @@ -24,7 +22,7 @@ export declare class VFS { unlinkPromisify: (path: fs.PathLike) => Promise; rmdirPromisify: (path: fs.PathLike) => Promise; renamePromisify: (oldPath: fs.PathLike, newPath: fs.PathLike) => Promise; - constructor(asyncQueue: IAsyncQueue, uuidGenerator: IUUidGenerator); + constructor(asyncQueue: IAsyncQueue); exists(filepath: fs.PathLike): boolean; existsAsync(filepath: fs.PathLike): Promise; copyFile(filepath: fs.PathLike, target: fs.PathLike): void; @@ -48,10 +46,10 @@ export declare class VFS { removeDirAsync(filepath: string): Promise; rename(oldPath: string, newPath: string): void; renameAsync(oldPath: string, newPath: string): Promise; - protected lockFileSync(filepath: any): void; - protected checkFileSync(filepath: any): any; + protected lockFileSync(filepath: any): () => void; + protected checkFileSync(filepath: any): boolean; protected unlockFileSync(filepath: any): void; - getFileExtension(filepath: string): string; + getFileExtension(filepath: string): string | undefined; stripExtension(filepath: string): string; minifyAllJsonInDirRecursive(filepath: string): Promise; minifyAllJsonInDirRecursiveAsync(filepath: string): Promise; diff --git a/TypeScript/23CustomAbstractChatBot/types/utils/Watermark.d.ts b/TypeScript/23CustomAbstractChatBot/types/utils/Watermark.d.ts index 703d7bc..947ff19 100644 --- a/TypeScript/23CustomAbstractChatBot/types/utils/Watermark.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/utils/Watermark.d.ts @@ -1,7 +1,7 @@ -import { ICoreConfig } from "@spt-aki/models/spt/config/ICoreConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; +import { ICoreConfig } from "@spt/models/spt/config/ICoreConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; export declare class WatermarkLocale { protected localisationService: LocalisationService; protected description: string[]; @@ -16,11 +16,11 @@ export declare class Watermark { protected logger: ILogger; protected configServer: ConfigServer; protected localisationService: LocalisationService; - protected watermarkLocale?: WatermarkLocale; - protected akiConfig: ICoreConfig; - constructor(logger: ILogger, configServer: ConfigServer, localisationService: LocalisationService, watermarkLocale?: WatermarkLocale); + protected watermarkLocale: WatermarkLocale; + protected sptConfig: ICoreConfig; protected text: string[]; protected versionLabel: string; + constructor(logger: ILogger, configServer: ConfigServer, localisationService: LocalisationService, watermarkLocale: WatermarkLocale); initialize(): void; /** * Get a version string (x.x.x) or (x.x.x-BLEEDINGEDGE) OR (X.X.X (18xxx)) @@ -40,6 +40,4 @@ export declare class Watermark { protected resetCursor(): void; /** Draw the watermark */ protected draw(): void; - /** Caculate text length */ - protected textLength(s: string): number; } diff --git a/TypeScript/23CustomAbstractChatBot/types/utils/cloners/ICloner.d.ts b/TypeScript/23CustomAbstractChatBot/types/utils/cloners/ICloner.d.ts new file mode 100644 index 0000000..77c0541 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/utils/cloners/ICloner.d.ts @@ -0,0 +1,3 @@ +export interface ICloner { + clone(obj: T): T; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/utils/cloners/JsonCloner.d.ts b/TypeScript/23CustomAbstractChatBot/types/utils/cloners/JsonCloner.d.ts new file mode 100644 index 0000000..130dadb --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/utils/cloners/JsonCloner.d.ts @@ -0,0 +1,4 @@ +import type { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class JsonCloner implements ICloner { + clone(obj: T): T; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/utils/cloners/RecursiveCloner.d.ts b/TypeScript/23CustomAbstractChatBot/types/utils/cloners/RecursiveCloner.d.ts new file mode 100644 index 0000000..9ea2882 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/utils/cloners/RecursiveCloner.d.ts @@ -0,0 +1,5 @@ +import type { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class RecursiveCloner implements ICloner { + private static primitives; + clone(obj: T): T; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/utils/cloners/StructuredCloner.d.ts b/TypeScript/23CustomAbstractChatBot/types/utils/cloners/StructuredCloner.d.ts new file mode 100644 index 0000000..6401443 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/utils/cloners/StructuredCloner.d.ts @@ -0,0 +1,4 @@ +import type { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class StructuredCloner implements ICloner { + clone(obj: T): T; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/utils/collections/lists/LinkedList.d.ts b/TypeScript/23CustomAbstractChatBot/types/utils/collections/lists/LinkedList.d.ts index aca0659..3c35a5a 100644 --- a/TypeScript/23CustomAbstractChatBot/types/utils/collections/lists/LinkedList.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/utils/collections/lists/LinkedList.d.ts @@ -1,30 +1,56 @@ export declare class LinkedList { - private head; - private tail; - add(t: T): void; - addRange(list: T[]): void; - getHead(): LinkedListNode; - getTail(): LinkedListNode; - isEmpty(): boolean; - getSize(): number; - removeFirst(): LinkedListNode; - removeLast(): LinkedListNode; - indexOf(func: (t: T) => boolean): number; - contains(func: (t: T) => boolean): boolean; - forEachNode(func: (t: LinkedListNode) => void): void; - forEachValue(func: (t: T) => void): void; - findFirstNode(func: (t: LinkedListNode) => boolean): LinkedListNode; - findFirstValue(func: (t: T) => boolean): T; - toList(): T[]; -} -export declare class LinkedListNode { - private previous; - private value; - private next; - constructor(value: T, previous?: LinkedListNode, next?: LinkedListNode); - getValue(): T; - getNextNode(): LinkedListNode; - setNextNode(node: LinkedListNode): void; - getPreviousNode(): LinkedListNode; - setPreviousNode(node: LinkedListNode): void; + private head?; + private tail?; + private _length; + get length(): number; + private set length(value); + constructor(); + /** + * Adds an element to the start of the list. + */ + prepend(value: T): void; + /** + * Adds an element at the given index to the list. + */ + insertAt(value: T, idx: number): void; + /** + * Adds an element to the end of the list. + */ + append(value: T): void; + /** + * Returns the first element's value. + */ + getHead(): T | undefined; + /** + * Finds the element from the list at the given index and returns it's value. + */ + get(idx: number): T | undefined; + /** + * Returns the last element's value. + */ + getTail(): T | undefined; + /** + * Finds and removes the first element from a list that has a value equal to the given value, returns it's value if it successfully removed it. + */ + remove(value: T): T | undefined; + /** + * Removes the first element from the list and returns it's value. If the list is empty, undefined is returned and the list is not modified. + */ + shift(): T | undefined; + /** + * Removes the element from the list at the given index and returns it's value. + */ + removeAt(idx: number): T | undefined; + /** + * Removes the last element from the list and returns it's value. If the list is empty, undefined is returned and the list is not modified. + */ + pop(): T | undefined; + /** + * Returns an iterable of index, value pairs for every entry in the list. + */ + entries(): IterableIterator<[number, T | undefined]>; + /** + * Returns an iterable of values in the list. + */ + values(): IterableIterator; } diff --git a/TypeScript/23CustomAbstractChatBot/types/utils/collections/lists/Nodes.d.ts b/TypeScript/23CustomAbstractChatBot/types/utils/collections/lists/Nodes.d.ts new file mode 100644 index 0000000..8e29e59 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/utils/collections/lists/Nodes.d.ts @@ -0,0 +1,6 @@ +export declare class LinkedListNode { + value: T; + prev?: LinkedListNode; + next?: LinkedListNode; + constructor(value: T, prev?: LinkedListNode, next?: LinkedListNode); +} diff --git a/TypeScript/23CustomAbstractChatBot/types/utils/collections/queue/Queue.d.ts b/TypeScript/23CustomAbstractChatBot/types/utils/collections/queue/Queue.d.ts index 645d462..80514f4 100644 --- a/TypeScript/23CustomAbstractChatBot/types/utils/collections/queue/Queue.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/utils/collections/queue/Queue.d.ts @@ -1,12 +1,21 @@ export declare class Queue { - private elements; - private head; - private tail; + private list; + get length(): number; constructor(); + /** + * Adds an element to the end of the queue. + */ enqueue(element: T): void; + /** + * Iterates over the elements received and adds each one to the end of the queue. + */ enqueueAll(elements: T[]): void; - dequeue(): T; - peek(): T; - getLength(): number; - isEmpty(): boolean; + /** + * Removes the first element from the queue and returns it's value. If the queue is empty, undefined is returned and the queue is not modified. + */ + dequeue(): T | undefined; + /** + * Returns the first element's value. + */ + peek(): T | undefined; } diff --git a/TypeScript/23CustomAbstractChatBot/types/utils/logging/AbstractWinstonLogger.d.ts b/TypeScript/23CustomAbstractChatBot/types/utils/logging/AbstractWinstonLogger.d.ts index 4d2eba7..7098f85 100644 --- a/TypeScript/23CustomAbstractChatBot/types/utils/logging/AbstractWinstonLogger.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/utils/logging/AbstractWinstonLogger.d.ts @@ -1,16 +1,14 @@ /// import fs from "node:fs"; import winston from "winston"; -import { Daum } from "@spt-aki/models/eft/itemEvent/IItemEventRouterRequest"; -import { LogBackgroundColor } from "@spt-aki/models/spt/logging/LogBackgroundColor"; -import { LogTextColor } from "@spt-aki/models/spt/logging/LogTextColor"; -import { SptLogger } from "@spt-aki/models/spt/logging/SptLogger"; -import { IAsyncQueue } from "@spt-aki/models/spt/utils/IAsyncQueue"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { IUUidGenerator } from "@spt-aki/models/spt/utils/IUuidGenerator"; +import { Daum } from "@spt/models/eft/itemEvent/IItemEventRouterRequest"; +import { LogBackgroundColor } from "@spt/models/spt/logging/LogBackgroundColor"; +import { LogTextColor } from "@spt/models/spt/logging/LogTextColor"; +import { SptLogger } from "@spt/models/spt/logging/SptLogger"; +import { IAsyncQueue } from "@spt/models/spt/utils/IAsyncQueue"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; export declare abstract class AbstractWinstonLogger implements ILogger { protected asyncQueue: IAsyncQueue; - protected uuidGenerator: IUUidGenerator; protected showDebugInConsole: boolean; protected filePath: string; protected logLevels: { @@ -44,12 +42,13 @@ export declare abstract class AbstractWinstonLogger implements ILogger { }; protected logger: winston.Logger & SptLogger; protected writeFilePromisify: (path: fs.PathLike, data: string, options?: any) => Promise; - constructor(asyncQueue: IAsyncQueue, uuidGenerator: IUUidGenerator); + constructor(asyncQueue: IAsyncQueue); protected abstract isLogToFile(): boolean; protected abstract isLogToConsole(): boolean; protected abstract isLogExceptions(): boolean; protected abstract getFilePath(): string; protected abstract getFileName(): string; + protected getLogFrequency(): string; protected getLogMaxSize(): string; protected getLogMaxFiles(): string; writeToLogFile(data: string | Daum): Promise; diff --git a/TypeScript/23CustomAbstractChatBot/types/utils/logging/WinstonMainLogger.d.ts b/TypeScript/23CustomAbstractChatBot/types/utils/logging/WinstonMainLogger.d.ts index ae1b6fc..8a634b2 100644 --- a/TypeScript/23CustomAbstractChatBot/types/utils/logging/WinstonMainLogger.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/utils/logging/WinstonMainLogger.d.ts @@ -1,10 +1,8 @@ -import { IAsyncQueue } from "@spt-aki/models/spt/utils/IAsyncQueue"; -import { IUUidGenerator } from "@spt-aki/models/spt/utils/IUuidGenerator"; -import { AbstractWinstonLogger } from "@spt-aki/utils/logging/AbstractWinstonLogger"; +import { IAsyncQueue } from "@spt/models/spt/utils/IAsyncQueue"; +import { AbstractWinstonLogger } from "@spt/utils/logging/AbstractWinstonLogger"; export declare class WinstonMainLogger extends AbstractWinstonLogger { protected asyncQueue: IAsyncQueue; - protected uuidGenerator: IUUidGenerator; - constructor(asyncQueue: IAsyncQueue, uuidGenerator: IUUidGenerator); + constructor(asyncQueue: IAsyncQueue); protected isLogExceptions(): boolean; protected isLogToFile(): boolean; protected isLogToConsole(): boolean; diff --git a/TypeScript/23CustomAbstractChatBot/types/utils/logging/WinstonRequestLogger.d.ts b/TypeScript/23CustomAbstractChatBot/types/utils/logging/WinstonRequestLogger.d.ts index be14f1b..0988b6f 100644 --- a/TypeScript/23CustomAbstractChatBot/types/utils/logging/WinstonRequestLogger.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/utils/logging/WinstonRequestLogger.d.ts @@ -1,10 +1,8 @@ -import { IAsyncQueue } from "@spt-aki/models/spt/utils/IAsyncQueue"; -import { IUUidGenerator } from "@spt-aki/models/spt/utils/IUuidGenerator"; -import { AbstractWinstonLogger } from "@spt-aki/utils/logging/AbstractWinstonLogger"; +import { IAsyncQueue } from "@spt/models/spt/utils/IAsyncQueue"; +import { AbstractWinstonLogger } from "@spt/utils/logging/AbstractWinstonLogger"; export declare class WinstonRequestLogger extends AbstractWinstonLogger { protected asyncQueue: IAsyncQueue; - protected uuidGenerator: IUUidGenerator; - constructor(asyncQueue: IAsyncQueue, uuidGenerator: IUUidGenerator); + constructor(asyncQueue: IAsyncQueue); protected isLogExceptions(): boolean; protected isLogToFile(): boolean; protected isLogToConsole(): boolean; diff --git a/TypeScript/24WebSocket/types/callbacks/AchievementCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/AchievementCallbacks.d.ts index 61d3cf2..4fb7125 100644 --- a/TypeScript/24WebSocket/types/callbacks/AchievementCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/AchievementCallbacks.d.ts @@ -1,10 +1,10 @@ -import { AchievementController } from "@spt-aki/controllers/AchievementController"; -import { ProfileController } from "@spt-aki/controllers/ProfileController"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { ICompletedAchievementsResponse } from "@spt-aki/models/eft/profile/ICompletedAchievementsResponse"; -import { IGetAchievementsResponse } from "@spt-aki/models/eft/profile/IGetAchievementsResponse"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { AchievementController } from "@spt/controllers/AchievementController"; +import { ProfileController } from "@spt/controllers/ProfileController"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { ICompletedAchievementsResponse } from "@spt/models/eft/profile/ICompletedAchievementsResponse"; +import { IGetAchievementsResponse } from "@spt/models/eft/profile/IGetAchievementsResponse"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class AchievementCallbacks { protected achievementController: AchievementController; protected profileController: ProfileController; diff --git a/TypeScript/24WebSocket/types/callbacks/BotCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/BotCallbacks.d.ts index fd0abfc..7d22dcf 100644 --- a/TypeScript/24WebSocket/types/callbacks/BotCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/BotCallbacks.d.ts @@ -1,10 +1,10 @@ -import { BotController } from "@spt-aki/controllers/BotController"; -import { IGenerateBotsRequestData } from "@spt-aki/models/eft/bot/IGenerateBotsRequestData"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IBotBase } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { Difficulties } from "@spt-aki/models/eft/common/tables/IBotType"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { BotController } from "@spt/controllers/BotController"; +import { IGenerateBotsRequestData } from "@spt/models/eft/bot/IGenerateBotsRequestData"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IBotBase } from "@spt/models/eft/common/tables/IBotBase"; +import { Difficulties } from "@spt/models/eft/common/tables/IBotType"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class BotCallbacks { protected botController: BotController; protected httpResponse: HttpResponseUtil; @@ -34,7 +34,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/maxCap * @returns string */ - getBotCap(): string; + getBotCap(url: string, info: any, sessionID: string): string; /** * Handle singleplayer/settings/bot/getBotBehaviours * @returns string diff --git a/TypeScript/24WebSocket/types/callbacks/BuildsCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/BuildsCallbacks.d.ts index eb8843c..79fee87 100644 --- a/TypeScript/24WebSocket/types/callbacks/BuildsCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/BuildsCallbacks.d.ts @@ -1,12 +1,12 @@ -import { BuildController } from "@spt-aki/controllers/BuildController"; -import { ISetMagazineRequest } from "@spt-aki/models/eft/builds/ISetMagazineRequest"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { INullResponseData } from "@spt-aki/models/eft/httpResponse/INullResponseData"; -import { IPresetBuildActionRequestData } from "@spt-aki/models/eft/presetBuild/IPresetBuildActionRequestData"; -import { IRemoveBuildRequestData } from "@spt-aki/models/eft/presetBuild/IRemoveBuildRequestData"; -import { IUserBuilds } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { BuildController } from "@spt/controllers/BuildController"; +import { ISetMagazineRequest } from "@spt/models/eft/builds/ISetMagazineRequest"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { INullResponseData } from "@spt/models/eft/httpResponse/INullResponseData"; +import { IPresetBuildActionRequestData } from "@spt/models/eft/presetBuild/IPresetBuildActionRequestData"; +import { IRemoveBuildRequestData } from "@spt/models/eft/presetBuild/IRemoveBuildRequestData"; +import { IUserBuilds } from "@spt/models/eft/profile/ISptProfile"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class BuildsCallbacks { protected httpResponse: HttpResponseUtil; protected buildController: BuildController; diff --git a/TypeScript/24WebSocket/types/callbacks/BundleCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/BundleCallbacks.d.ts index f6a664d..3e579dc 100644 --- a/TypeScript/24WebSocket/types/callbacks/BundleCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/BundleCallbacks.d.ts @@ -1,7 +1,7 @@ -import { BundleLoader } from "@spt-aki/loaders/BundleLoader"; -import { IHttpConfig } from "@spt-aki/models/spt/config/IHttpConfig"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { BundleLoader } from "@spt/loaders/BundleLoader"; +import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class BundleCallbacks { protected httpResponse: HttpResponseUtil; protected bundleLoader: BundleLoader; diff --git a/TypeScript/24WebSocket/types/callbacks/ClientLogCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/ClientLogCallbacks.d.ts index 1fb7acc..bfeb9a4 100644 --- a/TypeScript/24WebSocket/types/callbacks/ClientLogCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/ClientLogCallbacks.d.ts @@ -1,10 +1,10 @@ -import { ClientLogController } from "@spt-aki/controllers/ClientLogController"; -import { ModLoadOrder } from "@spt-aki/loaders/ModLoadOrder"; -import { INullResponseData } from "@spt-aki/models/eft/httpResponse/INullResponseData"; -import { IClientLogRequest } from "@spt-aki/models/spt/logging/IClientLogRequest"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { ClientLogController } from "@spt/controllers/ClientLogController"; +import { ModLoadOrder } from "@spt/loaders/ModLoadOrder"; +import { INullResponseData } from "@spt/models/eft/httpResponse/INullResponseData"; +import { IClientLogRequest } from "@spt/models/spt/logging/IClientLogRequest"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; /** Handle client logging related events */ export declare class ClientLogCallbacks { protected httpResponse: HttpResponseUtil; diff --git a/TypeScript/24WebSocket/types/callbacks/CustomizationCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/CustomizationCallbacks.d.ts index 9ea8faa..3541343 100644 --- a/TypeScript/24WebSocket/types/callbacks/CustomizationCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/CustomizationCallbacks.d.ts @@ -1,14 +1,14 @@ -import { CustomizationController } from "@spt-aki/controllers/CustomizationController"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { ISuit } from "@spt-aki/models/eft/common/tables/ITrader"; -import { IBuyClothingRequestData } from "@spt-aki/models/eft/customization/IBuyClothingRequestData"; -import { IGetSuitsResponse } from "@spt-aki/models/eft/customization/IGetSuitsResponse"; -import { IWearClothingRequestData } from "@spt-aki/models/eft/customization/IWearClothingRequestData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { CustomizationController } from "@spt/controllers/CustomizationController"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { ISuit } from "@spt/models/eft/common/tables/ITrader"; +import { IBuyClothingRequestData } from "@spt/models/eft/customization/IBuyClothingRequestData"; +import { IGetSuitsResponse } from "@spt/models/eft/customization/IGetSuitsResponse"; +import { IWearClothingRequestData } from "@spt/models/eft/customization/IWearClothingRequestData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class CustomizationCallbacks { protected customizationController: CustomizationController; protected saveServer: SaveServer; diff --git a/TypeScript/24WebSocket/types/callbacks/DataCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/DataCallbacks.d.ts index fbac60b..41f1d0c 100644 --- a/TypeScript/24WebSocket/types/callbacks/DataCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/DataCallbacks.d.ts @@ -1,27 +1,31 @@ -import { HideoutController } from "@spt-aki/controllers/HideoutController"; -import { RagfairController } from "@spt-aki/controllers/RagfairController"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IGlobals } from "@spt-aki/models/eft/common/IGlobals"; -import { ICustomizationItem } from "@spt-aki/models/eft/common/tables/ICustomizationItem"; -import { IHandbookBase } from "@spt-aki/models/eft/common/tables/IHandbookBase"; -import { IGetItemPricesResponse } from "@spt-aki/models/eft/game/IGetItemPricesResponse"; -import { IHideoutArea } from "@spt-aki/models/eft/hideout/IHideoutArea"; -import { IHideoutProduction } from "@spt-aki/models/eft/hideout/IHideoutProduction"; -import { IHideoutScavCase } from "@spt-aki/models/eft/hideout/IHideoutScavCase"; -import { IHideoutSettingsBase } from "@spt-aki/models/eft/hideout/IHideoutSettingsBase"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { ISettingsBase } from "@spt-aki/models/spt/server/ISettingsBase"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { HideoutController } from "@spt/controllers/HideoutController"; +import { RagfairController } from "@spt/controllers/RagfairController"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IGlobals } from "@spt/models/eft/common/IGlobals"; +import { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomizationItem"; +import { IHandbookBase } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IGetItemPricesResponse } from "@spt/models/eft/game/IGetItemPricesResponse"; +import { IHideoutArea } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutScavCase } from "@spt/models/eft/hideout/IHideoutScavCase"; +import { IHideoutSettingsBase } from "@spt/models/eft/hideout/IHideoutSettingsBase"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { ISettingsBase } from "@spt/models/spt/server/ISettingsBase"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; /** * Handle client requests */ export declare class DataCallbacks { protected httpResponse: HttpResponseUtil; - protected databaseServer: DatabaseServer; + protected timeUtil: TimeUtil; + protected traderHelper: TraderHelper; + protected databaseService: DatabaseService; protected ragfairController: RagfairController; protected hideoutController: HideoutController; - constructor(httpResponse: HttpResponseUtil, databaseServer: DatabaseServer, ragfairController: RagfairController, hideoutController: HideoutController); + constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, ragfairController: RagfairController, hideoutController: HideoutController); /** * Handle client/settings * @returns ISettingsBase diff --git a/TypeScript/24WebSocket/types/callbacks/DialogueCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/DialogueCallbacks.d.ts index f6d3079..baee279 100644 --- a/TypeScript/24WebSocket/types/callbacks/DialogueCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/DialogueCallbacks.d.ts @@ -1,36 +1,36 @@ -import { DialogueController } from "@spt-aki/controllers/DialogueController"; -import { OnUpdate } from "@spt-aki/di/OnUpdate"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IUIDRequestData } from "@spt-aki/models/eft/common/request/IUIDRequestData"; -import { IAcceptFriendRequestData, ICancelFriendRequestData, IDeclineFriendRequestData } from "@spt-aki/models/eft/dialog/IAcceptFriendRequestData"; -import { IAddUserGroupMailRequest } from "@spt-aki/models/eft/dialog/IAddUserGroupMailRequest"; -import { IChangeGroupMailOwnerRequest } from "@spt-aki/models/eft/dialog/IChangeGroupMailOwnerRequest"; -import { IChatServer } from "@spt-aki/models/eft/dialog/IChatServer"; -import { IClearMailMessageRequest } from "@spt-aki/models/eft/dialog/IClearMailMessageRequest"; -import { ICreateGroupMailRequest } from "@spt-aki/models/eft/dialog/ICreateGroupMailRequest"; -import { IDeleteFriendRequest } from "@spt-aki/models/eft/dialog/IDeleteFriendRequest"; -import { IFriendRequestData } from "@spt-aki/models/eft/dialog/IFriendRequestData"; -import { IFriendRequestSendResponse } from "@spt-aki/models/eft/dialog/IFriendRequestSendResponse"; -import { IGetAllAttachmentsRequestData } from "@spt-aki/models/eft/dialog/IGetAllAttachmentsRequestData"; -import { IGetAllAttachmentsResponse } from "@spt-aki/models/eft/dialog/IGetAllAttachmentsResponse"; -import { IGetChatServerListRequestData } from "@spt-aki/models/eft/dialog/IGetChatServerListRequestData"; -import { IGetFriendListDataResponse } from "@spt-aki/models/eft/dialog/IGetFriendListDataResponse"; -import { IGetMailDialogInfoRequestData } from "@spt-aki/models/eft/dialog/IGetMailDialogInfoRequestData"; -import { IGetMailDialogListRequestData } from "@spt-aki/models/eft/dialog/IGetMailDialogListRequestData"; -import { IGetMailDialogViewRequestData } from "@spt-aki/models/eft/dialog/IGetMailDialogViewRequestData"; -import { IGetMailDialogViewResponseData } from "@spt-aki/models/eft/dialog/IGetMailDialogViewResponseData"; -import { IPinDialogRequestData } from "@spt-aki/models/eft/dialog/IPinDialogRequestData"; -import { IRemoveDialogRequestData } from "@spt-aki/models/eft/dialog/IRemoveDialogRequestData"; -import { IRemoveMailMessageRequest } from "@spt-aki/models/eft/dialog/IRemoveMailMessageRequest"; -import { IRemoveUserGroupMailRequest } from "@spt-aki/models/eft/dialog/IRemoveUserGroupMailRequest"; -import { ISendMessageRequest } from "@spt-aki/models/eft/dialog/ISendMessageRequest"; -import { ISetDialogReadRequestData } from "@spt-aki/models/eft/dialog/ISetDialogReadRequestData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { INullResponseData } from "@spt-aki/models/eft/httpResponse/INullResponseData"; -import { DialogueInfo } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { DialogueController } from "@spt/controllers/DialogueController"; +import { OnUpdate } from "@spt/di/OnUpdate"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IUIDRequestData } from "@spt/models/eft/common/request/IUIDRequestData"; +import { IAcceptFriendRequestData, ICancelFriendRequestData, IDeclineFriendRequestData } from "@spt/models/eft/dialog/IAcceptFriendRequestData"; +import { IAddUserGroupMailRequest } from "@spt/models/eft/dialog/IAddUserGroupMailRequest"; +import { IChangeGroupMailOwnerRequest } from "@spt/models/eft/dialog/IChangeGroupMailOwnerRequest"; +import { IChatServer } from "@spt/models/eft/dialog/IChatServer"; +import { IClearMailMessageRequest } from "@spt/models/eft/dialog/IClearMailMessageRequest"; +import { ICreateGroupMailRequest } from "@spt/models/eft/dialog/ICreateGroupMailRequest"; +import { IDeleteFriendRequest } from "@spt/models/eft/dialog/IDeleteFriendRequest"; +import { IFriendRequestData } from "@spt/models/eft/dialog/IFriendRequestData"; +import { IFriendRequestSendResponse } from "@spt/models/eft/dialog/IFriendRequestSendResponse"; +import { IGetAllAttachmentsRequestData } from "@spt/models/eft/dialog/IGetAllAttachmentsRequestData"; +import { IGetAllAttachmentsResponse } from "@spt/models/eft/dialog/IGetAllAttachmentsResponse"; +import { IGetChatServerListRequestData } from "@spt/models/eft/dialog/IGetChatServerListRequestData"; +import { IGetFriendListDataResponse } from "@spt/models/eft/dialog/IGetFriendListDataResponse"; +import { IGetMailDialogInfoRequestData } from "@spt/models/eft/dialog/IGetMailDialogInfoRequestData"; +import { IGetMailDialogListRequestData } from "@spt/models/eft/dialog/IGetMailDialogListRequestData"; +import { IGetMailDialogViewRequestData } from "@spt/models/eft/dialog/IGetMailDialogViewRequestData"; +import { IGetMailDialogViewResponseData } from "@spt/models/eft/dialog/IGetMailDialogViewResponseData"; +import { IPinDialogRequestData } from "@spt/models/eft/dialog/IPinDialogRequestData"; +import { IRemoveDialogRequestData } from "@spt/models/eft/dialog/IRemoveDialogRequestData"; +import { IRemoveMailMessageRequest } from "@spt/models/eft/dialog/IRemoveMailMessageRequest"; +import { IRemoveUserGroupMailRequest } from "@spt/models/eft/dialog/IRemoveUserGroupMailRequest"; +import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; +import { ISetDialogReadRequestData } from "@spt/models/eft/dialog/ISetDialogReadRequestData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { INullResponseData } from "@spt/models/eft/httpResponse/INullResponseData"; +import { DialogueInfo } from "@spt/models/eft/profile/ISptProfile"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class DialogueCallbacks implements OnUpdate { protected hashUtil: HashUtil; protected timeUtil: TimeUtil; @@ -65,7 +65,7 @@ export declare class DialogueCallbacks implements OnUpdate { * Handle client/mail/dialog/getAllAttachments * @returns IGetAllAttachmentsResponse */ - getAllAttachments(url: string, info: IGetAllAttachmentsRequestData, sessionID: string): IGetBodyResponseData; + getAllAttachments(url: string, info: IGetAllAttachmentsRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/mail/msg/send */ sendMessage(url: string, request: ISendMessageRequest, sessionID: string): IGetBodyResponseData; /** Handle client/friend/request/list/outbox */ diff --git a/TypeScript/24WebSocket/types/callbacks/GameCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/GameCallbacks.d.ts index f4fa0d7..b41454f 100644 --- a/TypeScript/24WebSocket/types/callbacks/GameCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/GameCallbacks.d.ts @@ -1,25 +1,25 @@ -import { GameController } from "@spt-aki/controllers/GameController"; -import { OnLoad } from "@spt-aki/di/OnLoad"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IUIDRequestData } from "@spt-aki/models/eft/common/request/IUIDRequestData"; -import { ICheckVersionResponse } from "@spt-aki/models/eft/game/ICheckVersionResponse"; -import { ICurrentGroupResponse } from "@spt-aki/models/eft/game/ICurrentGroupResponse"; -import { IGameConfigResponse } from "@spt-aki/models/eft/game/IGameConfigResponse"; -import { IGameEmptyCrcRequestData } from "@spt-aki/models/eft/game/IGameEmptyCrcRequestData"; -import { IGameKeepAliveResponse } from "@spt-aki/models/eft/game/IGameKeepAliveResponse"; -import { IGameLogoutResponseData } from "@spt-aki/models/eft/game/IGameLogoutResponseData"; -import { IGameModeRequestData } from "@spt-aki/models/eft/game/IGameModeRequestData"; -import { IGameModeResponse } from "@spt-aki/models/eft/game/IGameModeResponse"; -import { IGameStartResponse } from "@spt-aki/models/eft/game/IGameStartResponse"; -import { IGetRaidTimeRequest } from "@spt-aki/models/eft/game/IGetRaidTimeRequest"; -import { IGetRaidTimeResponse } from "@spt-aki/models/eft/game/IGetRaidTimeResponse"; -import { IServerDetails } from "@spt-aki/models/eft/game/IServerDetails"; -import { IVersionValidateRequestData } from "@spt-aki/models/eft/game/IVersionValidateRequestData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { INullResponseData } from "@spt-aki/models/eft/httpResponse/INullResponseData"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -import { Watermark } from "@spt-aki/utils/Watermark"; +import { GameController } from "@spt/controllers/GameController"; +import { OnLoad } from "@spt/di/OnLoad"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IUIDRequestData } from "@spt/models/eft/common/request/IUIDRequestData"; +import { ICheckVersionResponse } from "@spt/models/eft/game/ICheckVersionResponse"; +import { ICurrentGroupResponse } from "@spt/models/eft/game/ICurrentGroupResponse"; +import { IGameConfigResponse } from "@spt/models/eft/game/IGameConfigResponse"; +import { IGameEmptyCrcRequestData } from "@spt/models/eft/game/IGameEmptyCrcRequestData"; +import { IGameKeepAliveResponse } from "@spt/models/eft/game/IGameKeepAliveResponse"; +import { IGameLogoutResponseData } from "@spt/models/eft/game/IGameLogoutResponseData"; +import { IGameModeRequestData } from "@spt/models/eft/game/IGameModeRequestData"; +import { IGameModeResponse } from "@spt/models/eft/game/IGameModeResponse"; +import { IGameStartResponse } from "@spt/models/eft/game/IGameStartResponse"; +import { IGetRaidTimeRequest } from "@spt/models/eft/game/IGetRaidTimeRequest"; +import { IGetRaidTimeResponse } from "@spt/models/eft/game/IGetRaidTimeResponse"; +import { IServerDetails } from "@spt/models/eft/game/IServerDetails"; +import { IVersionValidateRequestData } from "@spt/models/eft/game/IVersionValidateRequestData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { INullResponseData } from "@spt/models/eft/httpResponse/INullResponseData"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; +import { Watermark } from "@spt/utils/Watermark"; export declare class GameCallbacks implements OnLoad { protected httpResponse: HttpResponseUtil; protected watermark: Watermark; diff --git a/TypeScript/24WebSocket/types/callbacks/HandbookCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/HandbookCallbacks.d.ts index 0a099e9..61819de 100644 --- a/TypeScript/24WebSocket/types/callbacks/HandbookCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/HandbookCallbacks.d.ts @@ -1,5 +1,5 @@ -import { HandbookController } from "@spt-aki/controllers/HandbookController"; -import { OnLoad } from "@spt-aki/di/OnLoad"; +import { HandbookController } from "@spt/controllers/HandbookController"; +import { OnLoad } from "@spt/di/OnLoad"; export declare class HandbookCallbacks implements OnLoad { protected handbookController: HandbookController; constructor(handbookController: HandbookController); diff --git a/TypeScript/24WebSocket/types/callbacks/HealthCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/HealthCallbacks.d.ts index 24b633b..840c9b1 100644 --- a/TypeScript/24WebSocket/types/callbacks/HealthCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/HealthCallbacks.d.ts @@ -1,21 +1,21 @@ -import { HealthController } from "@spt-aki/controllers/HealthController"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IHealthTreatmentRequestData } from "@spt-aki/models/eft/health/IHealthTreatmentRequestData"; -import { IOffraidEatRequestData } from "@spt-aki/models/eft/health/IOffraidEatRequestData"; -import { IOffraidHealRequestData } from "@spt-aki/models/eft/health/IOffraidHealRequestData"; -import { ISyncHealthRequestData } from "@spt-aki/models/eft/health/ISyncHealthRequestData"; -import { IWorkoutData } from "@spt-aki/models/eft/health/IWorkoutData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { HealthController } from "@spt/controllers/HealthController"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IHealthTreatmentRequestData } from "@spt/models/eft/health/IHealthTreatmentRequestData"; +import { IOffraidEatRequestData } from "@spt/models/eft/health/IOffraidEatRequestData"; +import { IOffraidHealRequestData } from "@spt/models/eft/health/IOffraidHealRequestData"; +import { ISyncHealthRequestData } from "@spt/models/eft/health/ISyncHealthRequestData"; +import { IWorkoutData } from "@spt/models/eft/health/IWorkoutData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class HealthCallbacks { protected httpResponse: HttpResponseUtil; protected profileHelper: ProfileHelper; protected healthController: HealthController; constructor(httpResponse: HttpResponseUtil, profileHelper: ProfileHelper, healthController: HealthController); /** - * Custom aki server request found in modules/HealthSynchronizer.cs + * Custom spt server request found in modules/HealthSynchronizer.cs * @param url * @param info HealthListener.Instance.CurrentHealth class * @param sessionID session id @@ -23,7 +23,7 @@ export declare class HealthCallbacks { */ syncHealth(url: string, info: ISyncHealthRequestData, sessionID: string): IGetBodyResponseData; /** - * Custom aki server request found in modules/QTEPatch.cs + * Custom spt server request found in modules/QTEPatch.cs * @param url * @param info HealthListener.Instance.CurrentHealth class * @param sessionID session id diff --git a/TypeScript/24WebSocket/types/callbacks/HideoutCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/HideoutCallbacks.d.ts index c1fa7a5..fadab9b 100644 --- a/TypeScript/24WebSocket/types/callbacks/HideoutCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/HideoutCallbacks.d.ts @@ -1,22 +1,22 @@ -import { HideoutController } from "@spt-aki/controllers/HideoutController"; -import { OnUpdate } from "@spt-aki/di/OnUpdate"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IHandleQTEEventRequestData } from "@spt-aki/models/eft/hideout/IHandleQTEEventRequestData"; -import { IHideoutCancelProductionRequestData } from "@spt-aki/models/eft/hideout/IHideoutCancelProductionRequestData"; -import { IHideoutContinuousProductionStartRequestData } from "@spt-aki/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; -import { IHideoutImproveAreaRequestData } from "@spt-aki/models/eft/hideout/IHideoutImproveAreaRequestData"; -import { IHideoutPutItemInRequestData } from "@spt-aki/models/eft/hideout/IHideoutPutItemInRequestData"; -import { IHideoutScavCaseStartRequestData } from "@spt-aki/models/eft/hideout/IHideoutScavCaseStartRequestData"; -import { IHideoutSingleProductionStartRequestData } from "@spt-aki/models/eft/hideout/IHideoutSingleProductionStartRequestData"; -import { IHideoutTakeItemOutRequestData } from "@spt-aki/models/eft/hideout/IHideoutTakeItemOutRequestData"; -import { IHideoutTakeProductionRequestData } from "@spt-aki/models/eft/hideout/IHideoutTakeProductionRequestData"; -import { IHideoutToggleAreaRequestData } from "@spt-aki/models/eft/hideout/IHideoutToggleAreaRequestData"; -import { IHideoutUpgradeCompleteRequestData } from "@spt-aki/models/eft/hideout/IHideoutUpgradeCompleteRequestData"; -import { IHideoutUpgradeRequestData } from "@spt-aki/models/eft/hideout/IHideoutUpgradeRequestData"; -import { IRecordShootingRangePoints } from "@spt-aki/models/eft/hideout/IRecordShootingRangePoints"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IHideoutConfig } from "@spt-aki/models/spt/config/IHideoutConfig"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; +import { HideoutController } from "@spt/controllers/HideoutController"; +import { OnUpdate } from "@spt/di/OnUpdate"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IHandleQTEEventRequestData } from "@spt/models/eft/hideout/IHandleQTEEventRequestData"; +import { IHideoutCancelProductionRequestData } from "@spt/models/eft/hideout/IHideoutCancelProductionRequestData"; +import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; +import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; +import { IHideoutScavCaseStartRequestData } from "@spt/models/eft/hideout/IHideoutScavCaseStartRequestData"; +import { IHideoutSingleProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutSingleProductionStartRequestData"; +import { IHideoutTakeItemOutRequestData } from "@spt/models/eft/hideout/IHideoutTakeItemOutRequestData"; +import { IHideoutTakeProductionRequestData } from "@spt/models/eft/hideout/IHideoutTakeProductionRequestData"; +import { IHideoutToggleAreaRequestData } from "@spt/models/eft/hideout/IHideoutToggleAreaRequestData"; +import { IHideoutUpgradeCompleteRequestData } from "@spt/models/eft/hideout/IHideoutUpgradeCompleteRequestData"; +import { IHideoutUpgradeRequestData } from "@spt/models/eft/hideout/IHideoutUpgradeRequestData"; +import { IRecordShootingRangePoints } from "@spt/models/eft/hideout/IRecordShootingRangePoints"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; export declare class HideoutCallbacks implements OnUpdate { protected hideoutController: HideoutController; protected configServer: ConfigServer; diff --git a/TypeScript/24WebSocket/types/callbacks/HttpCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/HttpCallbacks.d.ts index 060301a..11b2db5 100644 --- a/TypeScript/24WebSocket/types/callbacks/HttpCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/HttpCallbacks.d.ts @@ -1,5 +1,5 @@ -import { OnLoad } from "@spt-aki/di/OnLoad"; -import { HttpServer } from "@spt-aki/servers/HttpServer"; +import { OnLoad } from "@spt/di/OnLoad"; +import { HttpServer } from "@spt/servers/HttpServer"; export declare class HttpCallbacks implements OnLoad { protected httpServer: HttpServer; constructor(httpServer: HttpServer); diff --git a/TypeScript/24WebSocket/types/callbacks/InraidCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/InraidCallbacks.d.ts index 2bffa77..dc6ede4 100644 --- a/TypeScript/24WebSocket/types/callbacks/InraidCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/InraidCallbacks.d.ts @@ -1,10 +1,10 @@ -import { InraidController } from "@spt-aki/controllers/InraidController"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { INullResponseData } from "@spt-aki/models/eft/httpResponse/INullResponseData"; -import { IItemDeliveryRequestData } from "@spt-aki/models/eft/inRaid/IItemDeliveryRequestData"; -import { IRegisterPlayerRequestData } from "@spt-aki/models/eft/inRaid/IRegisterPlayerRequestData"; -import { ISaveProgressRequestData } from "@spt-aki/models/eft/inRaid/ISaveProgressRequestData"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { InraidController } from "@spt/controllers/InraidController"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { INullResponseData } from "@spt/models/eft/httpResponse/INullResponseData"; +import { IItemDeliveryRequestData } from "@spt/models/eft/inRaid/IItemDeliveryRequestData"; +import { IRegisterPlayerRequestData } from "@spt/models/eft/inRaid/IRegisterPlayerRequestData"; +import { ISaveProgressRequestData } from "@spt/models/eft/inRaid/ISaveProgressRequestData"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; /** * Handle client requests */ @@ -59,4 +59,5 @@ export declare class InraidCallbacks { itemDelivery(url: string, request: IItemDeliveryRequestData, sessionId: string): INullResponseData; getTraitorScavHostileChance(url: string, info: IEmptyRequestData, sessionId: string): string; getSandboxMaxPatrolValue(url: string, info: IEmptyRequestData, sessionId: string): string; + getBossConvertSettings(url: string, info: IEmptyRequestData, sessionId: string): string; } diff --git a/TypeScript/24WebSocket/types/callbacks/InsuranceCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/InsuranceCallbacks.d.ts index 1c57629..888f128 100644 --- a/TypeScript/24WebSocket/types/callbacks/InsuranceCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/InsuranceCallbacks.d.ts @@ -1,15 +1,15 @@ -import { InsuranceController } from "@spt-aki/controllers/InsuranceController"; -import { OnUpdate } from "@spt-aki/di/OnUpdate"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { IGetInsuranceCostRequestData } from "@spt-aki/models/eft/insurance/IGetInsuranceCostRequestData"; -import { IGetInsuranceCostResponseData } from "@spt-aki/models/eft/insurance/IGetInsuranceCostResponseData"; -import { IInsureRequestData } from "@spt-aki/models/eft/insurance/IInsureRequestData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IInsuranceConfig } from "@spt-aki/models/spt/config/IInsuranceConfig"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { InsuranceService } from "@spt-aki/services/InsuranceService"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { InsuranceController } from "@spt/controllers/InsuranceController"; +import { OnUpdate } from "@spt/di/OnUpdate"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { IGetInsuranceCostRequestData } from "@spt/models/eft/insurance/IGetInsuranceCostRequestData"; +import { IGetInsuranceCostResponseData } from "@spt/models/eft/insurance/IGetInsuranceCostResponseData"; +import { IInsureRequestData } from "@spt/models/eft/insurance/IInsureRequestData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IInsuranceConfig } from "@spt/models/spt/config/IInsuranceConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { InsuranceService } from "@spt/services/InsuranceService"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class InsuranceCallbacks implements OnUpdate { protected insuranceController: InsuranceController; protected insuranceService: InsuranceService; diff --git a/TypeScript/24WebSocket/types/callbacks/InventoryCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/InventoryCallbacks.d.ts index 5aa0cb2..e0968e6 100644 --- a/TypeScript/24WebSocket/types/callbacks/InventoryCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/InventoryCallbacks.d.ts @@ -1,27 +1,27 @@ -import { InventoryController } from "@spt-aki/controllers/InventoryController"; -import { QuestController } from "@spt-aki/controllers/QuestController"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IInventoryBindRequestData } from "@spt-aki/models/eft/inventory/IInventoryBindRequestData"; -import { IInventoryCreateMarkerRequestData } from "@spt-aki/models/eft/inventory/IInventoryCreateMarkerRequestData"; -import { IInventoryDeleteMarkerRequestData } from "@spt-aki/models/eft/inventory/IInventoryDeleteMarkerRequestData"; -import { IInventoryEditMarkerRequestData } from "@spt-aki/models/eft/inventory/IInventoryEditMarkerRequestData"; -import { IInventoryExamineRequestData } from "@spt-aki/models/eft/inventory/IInventoryExamineRequestData"; -import { IInventoryFoldRequestData } from "@spt-aki/models/eft/inventory/IInventoryFoldRequestData"; -import { IInventoryMergeRequestData } from "@spt-aki/models/eft/inventory/IInventoryMergeRequestData"; -import { IInventoryMoveRequestData } from "@spt-aki/models/eft/inventory/IInventoryMoveRequestData"; -import { IInventoryReadEncyclopediaRequestData } from "@spt-aki/models/eft/inventory/IInventoryReadEncyclopediaRequestData"; -import { IInventoryRemoveRequestData } from "@spt-aki/models/eft/inventory/IInventoryRemoveRequestData"; -import { IInventorySortRequestData } from "@spt-aki/models/eft/inventory/IInventorySortRequestData"; -import { IInventorySplitRequestData } from "@spt-aki/models/eft/inventory/IInventorySplitRequestData"; -import { IInventorySwapRequestData } from "@spt-aki/models/eft/inventory/IInventorySwapRequestData"; -import { IInventoryTagRequestData } from "@spt-aki/models/eft/inventory/IInventoryTagRequestData"; -import { IInventoryToggleRequestData } from "@spt-aki/models/eft/inventory/IInventoryToggleRequestData"; -import { IInventoryTransferRequestData } from "@spt-aki/models/eft/inventory/IInventoryTransferRequestData"; -import { IOpenRandomLootContainerRequestData } from "@spt-aki/models/eft/inventory/IOpenRandomLootContainerRequestData"; -import { IRedeemProfileRequestData } from "@spt-aki/models/eft/inventory/IRedeemProfileRequestData"; -import { ISetFavoriteItems } from "@spt-aki/models/eft/inventory/ISetFavoriteItems"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IFailQuestRequestData } from "@spt-aki/models/eft/quests/IFailQuestRequestData"; +import { InventoryController } from "@spt/controllers/InventoryController"; +import { QuestController } from "@spt/controllers/QuestController"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IInventoryBindRequestData } from "@spt/models/eft/inventory/IInventoryBindRequestData"; +import { IInventoryCreateMarkerRequestData } from "@spt/models/eft/inventory/IInventoryCreateMarkerRequestData"; +import { IInventoryDeleteMarkerRequestData } from "@spt/models/eft/inventory/IInventoryDeleteMarkerRequestData"; +import { IInventoryEditMarkerRequestData } from "@spt/models/eft/inventory/IInventoryEditMarkerRequestData"; +import { IInventoryExamineRequestData } from "@spt/models/eft/inventory/IInventoryExamineRequestData"; +import { IInventoryFoldRequestData } from "@spt/models/eft/inventory/IInventoryFoldRequestData"; +import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData"; +import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData"; +import { IInventoryReadEncyclopediaRequestData } from "@spt/models/eft/inventory/IInventoryReadEncyclopediaRequestData"; +import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData"; +import { IInventorySortRequestData } from "@spt/models/eft/inventory/IInventorySortRequestData"; +import { IInventorySplitRequestData } from "@spt/models/eft/inventory/IInventorySplitRequestData"; +import { IInventorySwapRequestData } from "@spt/models/eft/inventory/IInventorySwapRequestData"; +import { IInventoryTagRequestData } from "@spt/models/eft/inventory/IInventoryTagRequestData"; +import { IInventoryToggleRequestData } from "@spt/models/eft/inventory/IInventoryToggleRequestData"; +import { IInventoryTransferRequestData } from "@spt/models/eft/inventory/IInventoryTransferRequestData"; +import { IOpenRandomLootContainerRequestData } from "@spt/models/eft/inventory/IOpenRandomLootContainerRequestData"; +import { IRedeemProfileRequestData } from "@spt/models/eft/inventory/IRedeemProfileRequestData"; +import { ISetFavoriteItems } from "@spt/models/eft/inventory/ISetFavoriteItems"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IFailQuestRequestData } from "@spt/models/eft/quests/IFailQuestRequestData"; export declare class InventoryCallbacks { protected inventoryController: InventoryController; protected questController: QuestController; diff --git a/TypeScript/24WebSocket/types/callbacks/ItemEventCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/ItemEventCallbacks.d.ts index 97547c6..2d42ae3 100644 --- a/TypeScript/24WebSocket/types/callbacks/ItemEventCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/ItemEventCallbacks.d.ts @@ -1,9 +1,9 @@ -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { Warning } from "@spt-aki/models/eft/itemEvent/IItemEventRouterBase"; -import { IItemEventRouterRequest } from "@spt-aki/models/eft/itemEvent/IItemEventRouterRequest"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { ItemEventRouter } from "@spt-aki/routers/ItemEventRouter"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { Warning } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; +import { IItemEventRouterRequest } from "@spt/models/eft/itemEvent/IItemEventRouterRequest"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { ItemEventRouter } from "@spt/routers/ItemEventRouter"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class ItemEventCallbacks { protected httpResponse: HttpResponseUtil; protected itemEventRouter: ItemEventRouter; diff --git a/TypeScript/24WebSocket/types/callbacks/LauncherCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/LauncherCallbacks.d.ts index b452291..46fb3f4 100644 --- a/TypeScript/24WebSocket/types/callbacks/LauncherCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/LauncherCallbacks.d.ts @@ -1,12 +1,12 @@ -import { LauncherController } from "@spt-aki/controllers/LauncherController"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IChangeRequestData } from "@spt-aki/models/eft/launcher/IChangeRequestData"; -import { ILoginRequestData } from "@spt-aki/models/eft/launcher/ILoginRequestData"; -import { IRegisterData } from "@spt-aki/models/eft/launcher/IRegisterData"; -import { IRemoveProfileData } from "@spt-aki/models/eft/launcher/IRemoveProfileData"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -import { Watermark } from "@spt-aki/utils/Watermark"; +import { LauncherController } from "@spt/controllers/LauncherController"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IChangeRequestData } from "@spt/models/eft/launcher/IChangeRequestData"; +import { ILoginRequestData } from "@spt/models/eft/launcher/ILoginRequestData"; +import { IRegisterData } from "@spt/models/eft/launcher/IRegisterData"; +import { IRemoveProfileData } from "@spt/models/eft/launcher/IRemoveProfileData"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; +import { Watermark } from "@spt/utils/Watermark"; export declare class LauncherCallbacks { protected httpResponse: HttpResponseUtil; protected launcherController: LauncherController; diff --git a/TypeScript/24WebSocket/types/callbacks/LocationCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/LocationCallbacks.d.ts index a370219..2825050 100644 --- a/TypeScript/24WebSocket/types/callbacks/LocationCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/LocationCallbacks.d.ts @@ -1,10 +1,10 @@ -import { LocationController } from "@spt-aki/controllers/LocationController"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { ILocationBase } from "@spt-aki/models/eft/common/ILocationBase"; -import { ILocationsGenerateAllResponse } from "@spt-aki/models/eft/common/ILocationsSourceDestinationBase"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { IGetLocationRequestData } from "@spt-aki/models/eft/location/IGetLocationRequestData"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { LocationController } from "@spt/controllers/LocationController"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { ILocationsGenerateAllResponse } from "@spt/models/eft/common/ILocationsSourceDestinationBase"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { IGetLocationRequestData } from "@spt/models/eft/location/IGetLocationRequestData"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class LocationCallbacks { protected httpResponse: HttpResponseUtil; protected locationController: LocationController; diff --git a/TypeScript/24WebSocket/types/callbacks/MatchCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/MatchCallbacks.d.ts index 4203fa1..73f7564 100644 --- a/TypeScript/24WebSocket/types/callbacks/MatchCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/MatchCallbacks.d.ts @@ -1,30 +1,30 @@ -import { MatchController } from "@spt-aki/controllers/MatchController"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { INullResponseData } from "@spt-aki/models/eft/httpResponse/INullResponseData"; -import { IEndOfflineRaidRequestData } from "@spt-aki/models/eft/match/IEndOfflineRaidRequestData"; -import { IGetRaidConfigurationRequestData } from "@spt-aki/models/eft/match/IGetRaidConfigurationRequestData"; -import { IGroupCharacter } from "@spt-aki/models/eft/match/IGroupCharacter"; -import { IMatchGroupCurrentResponse } from "@spt-aki/models/eft/match/IMatchGroupCurrentResponse"; -import { IMatchGroupInviteSendRequest } from "@spt-aki/models/eft/match/IMatchGroupInviteSendRequest"; -import { IMatchGroupPlayerRemoveRequest } from "@spt-aki/models/eft/match/IMatchGroupPlayerRemoveRequest"; -import { IMatchGroupStartGameRequest } from "@spt-aki/models/eft/match/IMatchGroupStartGameRequest"; -import { IMatchGroupStatusRequest } from "@spt-aki/models/eft/match/IMatchGroupStatusRequest"; -import { IMatchGroupStatusResponse } from "@spt-aki/models/eft/match/IMatchGroupStatusResponse"; -import { IMatchGroupTransferRequest } from "@spt-aki/models/eft/match/IMatchGroupTransferRequest"; -import { IProfileStatusResponse } from "@spt-aki/models/eft/match/IProfileStatusResponse"; -import { IPutMetricsRequestData } from "@spt-aki/models/eft/match/IPutMetricsRequestData"; -import { IRequestIdRequest } from "@spt-aki/models/eft/match/IRequestIdRequest"; -import { IUpdatePingRequestData } from "@spt-aki/models/eft/match/IUpdatePingRequestData"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; +import { MatchController } from "@spt/controllers/MatchController"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { INullResponseData } from "@spt/models/eft/httpResponse/INullResponseData"; +import { IEndOfflineRaidRequestData } from "@spt/models/eft/match/IEndOfflineRaidRequestData"; +import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; +import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; +import { IMatchGroupCurrentResponse } from "@spt/models/eft/match/IMatchGroupCurrentResponse"; +import { IMatchGroupInviteSendRequest } from "@spt/models/eft/match/IMatchGroupInviteSendRequest"; +import { IMatchGroupPlayerRemoveRequest } from "@spt/models/eft/match/IMatchGroupPlayerRemoveRequest"; +import { IMatchGroupStartGameRequest } from "@spt/models/eft/match/IMatchGroupStartGameRequest"; +import { IMatchGroupStatusRequest } from "@spt/models/eft/match/IMatchGroupStatusRequest"; +import { IMatchGroupStatusResponse } from "@spt/models/eft/match/IMatchGroupStatusResponse"; +import { IMatchGroupTransferRequest } from "@spt/models/eft/match/IMatchGroupTransferRequest"; +import { IProfileStatusResponse } from "@spt/models/eft/match/IProfileStatusResponse"; +import { IPutMetricsRequestData } from "@spt/models/eft/match/IPutMetricsRequestData"; +import { IRequestIdRequest } from "@spt/models/eft/match/IRequestIdRequest"; +import { IUpdatePingRequestData } from "@spt/models/eft/match/IUpdatePingRequestData"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; +import { JsonUtil } from "@spt/utils/JsonUtil"; export declare class MatchCallbacks { protected httpResponse: HttpResponseUtil; protected jsonUtil: JsonUtil; protected matchController: MatchController; - protected databaseServer: DatabaseServer; - constructor(httpResponse: HttpResponseUtil, jsonUtil: JsonUtil, matchController: MatchController, databaseServer: DatabaseServer); + protected databaseService: DatabaseService; + constructor(httpResponse: HttpResponseUtil, jsonUtil: JsonUtil, matchController: MatchController, databaseService: DatabaseService); /** Handle client/match/updatePing */ updatePing(url: string, info: IUpdatePingRequestData, sessionID: string): INullResponseData; exitMatch(url: string, info: IEmptyRequestData, sessionID: string): INullResponseData; diff --git a/TypeScript/24WebSocket/types/callbacks/ModCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/ModCallbacks.d.ts index 6af1e68..a0df59f 100644 --- a/TypeScript/24WebSocket/types/callbacks/ModCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/ModCallbacks.d.ts @@ -1,20 +1,20 @@ -import { OnLoad } from "@spt-aki/di/OnLoad"; -import { PostAkiModLoader } from "@spt-aki/loaders/PostAkiModLoader"; -import { IHttpConfig } from "@spt-aki/models/spt/config/IHttpConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { HttpFileUtil } from "@spt-aki/utils/HttpFileUtil"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { OnLoad } from "@spt/di/OnLoad"; +import { PostSptModLoader } from "@spt/loaders/PostSptModLoader"; +import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { HttpFileUtil } from "@spt/utils/HttpFileUtil"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class ModCallbacks implements OnLoad { protected logger: ILogger; protected httpResponse: HttpResponseUtil; protected httpFileUtil: HttpFileUtil; - protected postAkiModLoader: PostAkiModLoader; + protected postSptModLoader: PostSptModLoader; protected localisationService: LocalisationService; protected configServer: ConfigServer; protected httpConfig: IHttpConfig; - constructor(logger: ILogger, httpResponse: HttpResponseUtil, httpFileUtil: HttpFileUtil, postAkiModLoader: PostAkiModLoader, localisationService: LocalisationService, configServer: ConfigServer); + constructor(logger: ILogger, httpResponse: HttpResponseUtil, httpFileUtil: HttpFileUtil, postSptModLoader: PostSptModLoader, localisationService: LocalisationService, configServer: ConfigServer); onLoad(): Promise; getRoute(): string; } diff --git a/TypeScript/24WebSocket/types/callbacks/NoteCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/NoteCallbacks.d.ts index a60d3bb..d078171 100644 --- a/TypeScript/24WebSocket/types/callbacks/NoteCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/NoteCallbacks.d.ts @@ -1,7 +1,7 @@ -import { NoteController } from "@spt-aki/controllers/NoteController"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { INoteActionData } from "@spt-aki/models/eft/notes/INoteActionData"; +import { NoteController } from "@spt/controllers/NoteController"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { INoteActionData } from "@spt/models/eft/notes/INoteActionData"; export declare class NoteCallbacks { protected noteController: NoteController; constructor(noteController: NoteController); diff --git a/TypeScript/24WebSocket/types/callbacks/NotifierCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/NotifierCallbacks.d.ts index 2d561fa..0436e12 100644 --- a/TypeScript/24WebSocket/types/callbacks/NotifierCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/NotifierCallbacks.d.ts @@ -1,12 +1,12 @@ -import { NotifierController } from "@spt-aki/controllers/NotifierController"; -import { HttpServerHelper } from "@spt-aki/helpers/HttpServerHelper"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IUIDRequestData } from "@spt-aki/models/eft/common/request/IUIDRequestData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { INotifierChannel } from "@spt-aki/models/eft/notifier/INotifier"; -import { ISelectProfileResponse } from "@spt-aki/models/eft/notifier/ISelectProfileResponse"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; +import { NotifierController } from "@spt/controllers/NotifierController"; +import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IUIDRequestData } from "@spt/models/eft/common/request/IUIDRequestData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { INotifierChannel } from "@spt/models/eft/notifier/INotifier"; +import { ISelectProfileResponse } from "@spt/models/eft/notifier/ISelectProfileResponse"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; +import { JsonUtil } from "@spt/utils/JsonUtil"; export declare class NotifierCallbacks { protected httpServerHelper: HttpServerHelper; protected httpResponse: HttpResponseUtil; diff --git a/TypeScript/24WebSocket/types/callbacks/PresetCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/PresetCallbacks.d.ts index 2741094..24edfa2 100644 --- a/TypeScript/24WebSocket/types/callbacks/PresetCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/PresetCallbacks.d.ts @@ -1,5 +1,5 @@ -import { PresetController } from "@spt-aki/controllers/PresetController"; -import { OnLoad } from "@spt-aki/di/OnLoad"; +import { PresetController } from "@spt/controllers/PresetController"; +import { OnLoad } from "@spt/di/OnLoad"; export declare class PresetCallbacks implements OnLoad { protected presetController: PresetController; constructor(presetController: PresetController); diff --git a/TypeScript/24WebSocket/types/callbacks/ProfileCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/ProfileCallbacks.d.ts index e3d53e9..ba35f5e 100644 --- a/TypeScript/24WebSocket/types/callbacks/ProfileCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/ProfileCallbacks.d.ts @@ -1,23 +1,23 @@ -import { ProfileController } from "@spt-aki/controllers/ProfileController"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { INullResponseData } from "@spt-aki/models/eft/httpResponse/INullResponseData"; -import { IGetMiniProfileRequestData } from "@spt-aki/models/eft/launcher/IGetMiniProfileRequestData"; -import { GetProfileStatusResponseData } from "@spt-aki/models/eft/profile/GetProfileStatusResponseData"; -import { ICreateProfileResponse } from "@spt-aki/models/eft/profile/ICreateProfileResponse"; -import { IGetOtherProfileRequest } from "@spt-aki/models/eft/profile/IGetOtherProfileRequest"; -import { IGetOtherProfileResponse } from "@spt-aki/models/eft/profile/IGetOtherProfileResponse"; -import { IGetProfileSettingsRequest } from "@spt-aki/models/eft/profile/IGetProfileSettingsRequest"; -import { IProfileChangeNicknameRequestData } from "@spt-aki/models/eft/profile/IProfileChangeNicknameRequestData"; -import { IProfileChangeVoiceRequestData } from "@spt-aki/models/eft/profile/IProfileChangeVoiceRequestData"; -import { IProfileCreateRequestData } from "@spt-aki/models/eft/profile/IProfileCreateRequestData"; -import { ISearchFriendRequestData } from "@spt-aki/models/eft/profile/ISearchFriendRequestData"; -import { ISearchFriendResponse } from "@spt-aki/models/eft/profile/ISearchFriendResponse"; -import { IValidateNicknameRequestData } from "@spt-aki/models/eft/profile/IValidateNicknameRequestData"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { ProfileController } from "@spt/controllers/ProfileController"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { INullResponseData } from "@spt/models/eft/httpResponse/INullResponseData"; +import { IGetMiniProfileRequestData } from "@spt/models/eft/launcher/IGetMiniProfileRequestData"; +import { GetProfileStatusResponseData } from "@spt/models/eft/profile/GetProfileStatusResponseData"; +import { ICreateProfileResponse } from "@spt/models/eft/profile/ICreateProfileResponse"; +import { IGetOtherProfileRequest } from "@spt/models/eft/profile/IGetOtherProfileRequest"; +import { IGetOtherProfileResponse } from "@spt/models/eft/profile/IGetOtherProfileResponse"; +import { IGetProfileSettingsRequest } from "@spt/models/eft/profile/IGetProfileSettingsRequest"; +import { IProfileChangeNicknameRequestData } from "@spt/models/eft/profile/IProfileChangeNicknameRequestData"; +import { IProfileChangeVoiceRequestData } from "@spt/models/eft/profile/IProfileChangeVoiceRequestData"; +import { IProfileCreateRequestData } from "@spt/models/eft/profile/IProfileCreateRequestData"; +import { ISearchFriendRequestData } from "@spt/models/eft/profile/ISearchFriendRequestData"; +import { ISearchFriendResponse } from "@spt/models/eft/profile/ISearchFriendResponse"; +import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; /** Handle profile related client events */ export declare class ProfileCallbacks { protected httpResponse: HttpResponseUtil; @@ -74,7 +74,7 @@ export declare class ProfileCallbacks { /** * Handle client/profile/settings */ - getProfileSettings(url: string, info: IGetProfileSettingsRequest, sessionId: string): IGetBodyResponseData; + getProfileSettings(url: string, info: IGetProfileSettingsRequest, sessionId: string): IGetBodyResponseData; /** * Handle client/game/profile/search */ diff --git a/TypeScript/24WebSocket/types/callbacks/QuestCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/QuestCallbacks.d.ts index b5c5275..dec034e 100644 --- a/TypeScript/24WebSocket/types/callbacks/QuestCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/QuestCallbacks.d.ts @@ -1,17 +1,17 @@ -import { QuestController } from "@spt-aki/controllers/QuestController"; -import { RepeatableQuestController } from "@spt-aki/controllers/RepeatableQuestController"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IQuest } from "@spt-aki/models/eft/common/tables/IQuest"; -import { IPmcDataRepeatableQuest } from "@spt-aki/models/eft/common/tables/IRepeatableQuests"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IAcceptQuestRequestData } from "@spt-aki/models/eft/quests/IAcceptQuestRequestData"; -import { ICompleteQuestRequestData } from "@spt-aki/models/eft/quests/ICompleteQuestRequestData"; -import { IHandoverQuestRequestData } from "@spt-aki/models/eft/quests/IHandoverQuestRequestData"; -import { IListQuestsRequestData } from "@spt-aki/models/eft/quests/IListQuestsRequestData"; -import { IRepeatableQuestChangeRequest } from "@spt-aki/models/eft/quests/IRepeatableQuestChangeRequest"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { QuestController } from "@spt/controllers/QuestController"; +import { RepeatableQuestController } from "@spt/controllers/RepeatableQuestController"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IQuest } from "@spt/models/eft/common/tables/IQuest"; +import { IPmcDataRepeatableQuest } from "@spt/models/eft/common/tables/IRepeatableQuests"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IAcceptQuestRequestData } from "@spt/models/eft/quests/IAcceptQuestRequestData"; +import { ICompleteQuestRequestData } from "@spt/models/eft/quests/ICompleteQuestRequestData"; +import { IHandoverQuestRequestData } from "@spt/models/eft/quests/IHandoverQuestRequestData"; +import { IListQuestsRequestData } from "@spt/models/eft/quests/IListQuestsRequestData"; +import { IRepeatableQuestChangeRequest } from "@spt/models/eft/quests/IRepeatableQuestChangeRequest"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class QuestCallbacks { protected httpResponse: HttpResponseUtil; protected questController: QuestController; diff --git a/TypeScript/24WebSocket/types/callbacks/RagfairCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/RagfairCallbacks.d.ts index d448d6b..1e92996 100644 --- a/TypeScript/24WebSocket/types/callbacks/RagfairCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/RagfairCallbacks.d.ts @@ -1,27 +1,27 @@ -import { RagfairController } from "@spt-aki/controllers/RagfairController"; -import { OnLoad } from "@spt-aki/di/OnLoad"; -import { OnUpdate } from "@spt-aki/di/OnUpdate"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { INullResponseData } from "@spt-aki/models/eft/httpResponse/INullResponseData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IAddOfferRequestData } from "@spt-aki/models/eft/ragfair/IAddOfferRequestData"; -import { IExtendOfferRequestData } from "@spt-aki/models/eft/ragfair/IExtendOfferRequestData"; -import { IGetItemPriceResult } from "@spt-aki/models/eft/ragfair/IGetItemPriceResult"; -import { IGetMarketPriceRequestData } from "@spt-aki/models/eft/ragfair/IGetMarketPriceRequestData"; -import { IGetOffersResult } from "@spt-aki/models/eft/ragfair/IGetOffersResult"; -import { IGetRagfairOfferByIdRequest } from "@spt-aki/models/eft/ragfair/IGetRagfairOfferByIdRequest"; -import { IRagfairOffer } from "@spt-aki/models/eft/ragfair/IRagfairOffer"; -import { IRemoveOfferRequestData } from "@spt-aki/models/eft/ragfair/IRemoveOfferRequestData"; -import { ISearchRequestData } from "@spt-aki/models/eft/ragfair/ISearchRequestData"; -import { ISendRagfairReportRequestData } from "@spt-aki/models/eft/ragfair/ISendRagfairReportRequestData"; -import { IStorePlayerOfferTaxAmountRequestData } from "@spt-aki/models/eft/ragfair/IStorePlayerOfferTaxAmountRequestData"; -import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { RagfairServer } from "@spt-aki/servers/RagfairServer"; -import { RagfairTaxService } from "@spt-aki/services/RagfairTaxService"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { RagfairController } from "@spt/controllers/RagfairController"; +import { OnLoad } from "@spt/di/OnLoad"; +import { OnUpdate } from "@spt/di/OnUpdate"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { INullResponseData } from "@spt/models/eft/httpResponse/INullResponseData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IAddOfferRequestData } from "@spt/models/eft/ragfair/IAddOfferRequestData"; +import { IExtendOfferRequestData } from "@spt/models/eft/ragfair/IExtendOfferRequestData"; +import { IGetItemPriceResult } from "@spt/models/eft/ragfair/IGetItemPriceResult"; +import { IGetMarketPriceRequestData } from "@spt/models/eft/ragfair/IGetMarketPriceRequestData"; +import { IGetOffersResult } from "@spt/models/eft/ragfair/IGetOffersResult"; +import { IGetRagfairOfferByIdRequest } from "@spt/models/eft/ragfair/IGetRagfairOfferByIdRequest"; +import { IRagfairOffer } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { IRemoveOfferRequestData } from "@spt/models/eft/ragfair/IRemoveOfferRequestData"; +import { ISearchRequestData } from "@spt/models/eft/ragfair/ISearchRequestData"; +import { ISendRagfairReportRequestData } from "@spt/models/eft/ragfair/ISendRagfairReportRequestData"; +import { IStorePlayerOfferTaxAmountRequestData } from "@spt/models/eft/ragfair/IStorePlayerOfferTaxAmountRequestData"; +import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { RagfairServer } from "@spt/servers/RagfairServer"; +import { RagfairTaxService } from "@spt/services/RagfairTaxService"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; /** * Handle ragfair related callback events */ diff --git a/TypeScript/24WebSocket/types/callbacks/RepairCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/RepairCallbacks.d.ts index c8587dc..930708e 100644 --- a/TypeScript/24WebSocket/types/callbacks/RepairCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/RepairCallbacks.d.ts @@ -1,8 +1,8 @@ -import { RepairController } from "@spt-aki/controllers/RepairController"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IRepairActionDataRequest } from "@spt-aki/models/eft/repair/IRepairActionDataRequest"; -import { ITraderRepairActionDataRequest } from "@spt-aki/models/eft/repair/ITraderRepairActionDataRequest"; +import { RepairController } from "@spt/controllers/RepairController"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IRepairActionDataRequest } from "@spt/models/eft/repair/IRepairActionDataRequest"; +import { ITraderRepairActionDataRequest } from "@spt/models/eft/repair/ITraderRepairActionDataRequest"; export declare class RepairCallbacks { protected repairController: RepairController; constructor(repairController: RepairController); diff --git a/TypeScript/24WebSocket/types/callbacks/SaveCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/SaveCallbacks.d.ts index 74d463f..8f836cb 100644 --- a/TypeScript/24WebSocket/types/callbacks/SaveCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/SaveCallbacks.d.ts @@ -1,8 +1,8 @@ -import { OnLoad } from "@spt-aki/di/OnLoad"; -import { OnUpdate } from "@spt-aki/di/OnUpdate"; -import { ICoreConfig } from "@spt-aki/models/spt/config/ICoreConfig"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; +import { OnLoad } from "@spt/di/OnLoad"; +import { OnUpdate } from "@spt/di/OnUpdate"; +import { ICoreConfig } from "@spt/models/spt/config/ICoreConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; export declare class SaveCallbacks implements OnLoad, OnUpdate { protected saveServer: SaveServer; protected configServer: ConfigServer; diff --git a/TypeScript/24WebSocket/types/callbacks/TradeCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/TradeCallbacks.d.ts index bfa72b0..0f8ebe3 100644 --- a/TypeScript/24WebSocket/types/callbacks/TradeCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/TradeCallbacks.d.ts @@ -1,9 +1,9 @@ -import { TradeController } from "@spt-aki/controllers/TradeController"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IProcessBaseTradeRequestData } from "@spt-aki/models/eft/trade/IProcessBaseTradeRequestData"; -import { IProcessRagfairTradeRequestData } from "@spt-aki/models/eft/trade/IProcessRagfairTradeRequestData"; -import { ISellScavItemsToFenceRequestData } from "@spt-aki/models/eft/trade/ISellScavItemsToFenceRequestData"; +import { TradeController } from "@spt/controllers/TradeController"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IProcessBaseTradeRequestData } from "@spt/models/eft/trade/IProcessBaseTradeRequestData"; +import { IProcessRagfairTradeRequestData } from "@spt/models/eft/trade/IProcessRagfairTradeRequestData"; +import { ISellScavItemsToFenceRequestData } from "@spt/models/eft/trade/ISellScavItemsToFenceRequestData"; export declare class TradeCallbacks { protected tradeController: TradeController; constructor(tradeController: TradeController); diff --git a/TypeScript/24WebSocket/types/callbacks/TraderCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/TraderCallbacks.d.ts index 6f0929f..c081a9b 100644 --- a/TypeScript/24WebSocket/types/callbacks/TraderCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/TraderCallbacks.d.ts @@ -1,10 +1,10 @@ -import { TraderController } from "@spt-aki/controllers/TraderController"; -import { OnLoad } from "@spt-aki/di/OnLoad"; -import { OnUpdate } from "@spt-aki/di/OnUpdate"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { ITraderAssort, ITraderBase } from "@spt-aki/models/eft/common/tables/ITrader"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { TraderController } from "@spt/controllers/TraderController"; +import { OnLoad } from "@spt/di/OnLoad"; +import { OnUpdate } from "@spt/di/OnUpdate"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { ITraderAssort, ITraderBase } from "@spt/models/eft/common/tables/ITrader"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class TraderCallbacks implements OnLoad, OnUpdate { protected httpResponse: HttpResponseUtil; protected traderController: TraderController; diff --git a/TypeScript/24WebSocket/types/callbacks/WeatherCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/WeatherCallbacks.d.ts index 2c6fdf6..5ba5aab 100644 --- a/TypeScript/24WebSocket/types/callbacks/WeatherCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/WeatherCallbacks.d.ts @@ -1,8 +1,8 @@ -import { WeatherController } from "@spt-aki/controllers/WeatherController"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { IWeatherData } from "@spt-aki/models/eft/weather/IWeatherData"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { WeatherController } from "@spt/controllers/WeatherController"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { IWeatherData } from "@spt/models/eft/weather/IWeatherData"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class WeatherCallbacks { protected httpResponse: HttpResponseUtil; protected weatherController: WeatherController; diff --git a/TypeScript/24WebSocket/types/callbacks/WishlistCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/WishlistCallbacks.d.ts index 29c3e44..f5b500f 100644 --- a/TypeScript/24WebSocket/types/callbacks/WishlistCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/WishlistCallbacks.d.ts @@ -1,7 +1,7 @@ -import { WishlistController } from "@spt-aki/controllers/WishlistController"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IWishlistActionData } from "@spt-aki/models/eft/wishlist/IWishlistActionData"; +import { WishlistController } from "@spt/controllers/WishlistController"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IWishlistActionData } from "@spt/models/eft/wishlist/IWishlistActionData"; export declare class WishlistCallbacks { protected wishlistController: WishlistController; constructor(wishlistController: WishlistController); diff --git a/TypeScript/24WebSocket/types/context/ApplicationContext.d.ts b/TypeScript/24WebSocket/types/context/ApplicationContext.d.ts index 22c6c0e..bef168a 100644 --- a/TypeScript/24WebSocket/types/context/ApplicationContext.d.ts +++ b/TypeScript/24WebSocket/types/context/ApplicationContext.d.ts @@ -1,5 +1,5 @@ -import { ContextVariable } from "@spt-aki/context/ContextVariable"; -import { ContextVariableType } from "@spt-aki/context/ContextVariableType"; +import { ContextVariable } from "@spt/context/ContextVariable"; +import { ContextVariableType } from "@spt/context/ContextVariableType"; export declare class ApplicationContext { private variables; private static holderMaxSize; @@ -13,8 +13,8 @@ export declare class ApplicationContext { * const matchInfo = this.applicationContext.getLatestValue(ContextVariableType.RAID_CONFIGURATION).getValue(); * ``` */ - getLatestValue(type: ContextVariableType): ContextVariable; - getValues(type: ContextVariableType): ContextVariable[]; + getLatestValue(type: ContextVariableType): ContextVariable | undefined; + getValues(type: ContextVariableType): ContextVariable[] | undefined; addValue(type: ContextVariableType, value: any): void; clearValues(type: ContextVariableType): void; } diff --git a/TypeScript/24WebSocket/types/context/ContextVariable.d.ts b/TypeScript/24WebSocket/types/context/ContextVariable.d.ts index 21bf7ef..246be85 100644 --- a/TypeScript/24WebSocket/types/context/ContextVariable.d.ts +++ b/TypeScript/24WebSocket/types/context/ContextVariable.d.ts @@ -1,4 +1,4 @@ -import { ContextVariableType } from "@spt-aki/context/ContextVariableType"; +import { ContextVariableType } from "@spt/context/ContextVariableType"; export declare class ContextVariable { private value; private timestamp; diff --git a/TypeScript/24WebSocket/types/controllers/AchievementController.d.ts b/TypeScript/24WebSocket/types/controllers/AchievementController.d.ts index 32365c8..425b848 100644 --- a/TypeScript/24WebSocket/types/controllers/AchievementController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/AchievementController.d.ts @@ -1,14 +1,14 @@ -import { ICompletedAchievementsResponse } from "@spt-aki/models/eft/profile/ICompletedAchievementsResponse"; -import { IGetAchievementsResponse } from "@spt-aki/models/eft/profile/IGetAchievementsResponse"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; +import { ICompletedAchievementsResponse } from "@spt/models/eft/profile/ICompletedAchievementsResponse"; +import { IGetAchievementsResponse } from "@spt/models/eft/profile/IGetAchievementsResponse"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseService } from "@spt/services/DatabaseService"; /** * Logic for handling In Raid callbacks */ export declare class AchievementController { protected logger: ILogger; - protected databaseServer: DatabaseServer; - constructor(logger: ILogger, databaseServer: DatabaseServer); + protected databaseService: DatabaseService; + constructor(logger: ILogger, databaseService: DatabaseService); /** * Get base achievements * @param sessionID Session id diff --git a/TypeScript/24WebSocket/types/controllers/BotController.d.ts b/TypeScript/24WebSocket/types/controllers/BotController.d.ts index 99a848f..6431fca 100644 --- a/TypeScript/24WebSocket/types/controllers/BotController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/BotController.d.ts @@ -1,32 +1,34 @@ -import { ApplicationContext } from "@spt-aki/context/ApplicationContext"; -import { BotGenerator } from "@spt-aki/generators/BotGenerator"; -import { BotDifficultyHelper } from "@spt-aki/helpers/BotDifficultyHelper"; -import { BotHelper } from "@spt-aki/helpers/BotHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { MinMax } from "@spt-aki/models/common/MinMax"; -import { Condition, IGenerateBotsRequestData } from "@spt-aki/models/eft/bot/IGenerateBotsRequestData"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IBotBase } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { IBotCore } from "@spt-aki/models/eft/common/tables/IBotCore"; -import { Difficulty } from "@spt-aki/models/eft/common/tables/IBotType"; -import { BotGenerationDetails } from "@spt-aki/models/spt/bots/BotGenerationDetails"; -import { IBotConfig } from "@spt-aki/models/spt/config/IBotConfig"; -import { IPmcConfig } from "@spt-aki/models/spt/config/IPmcConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { BotGenerationCacheService } from "@spt-aki/services/BotGenerationCacheService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { MatchBotDetailsCacheService } from "@spt-aki/services/MatchBotDetailsCacheService"; -import { SeasonalEventService } from "@spt-aki/services/SeasonalEventService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { BotGenerator } from "@spt/generators/BotGenerator"; +import { BotDifficultyHelper } from "@spt/helpers/BotDifficultyHelper"; +import { BotHelper } from "@spt/helpers/BotHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { MinMax } from "@spt/models/common/MinMax"; +import { Condition, IGenerateBotsRequestData } from "@spt/models/eft/bot/IGenerateBotsRequestData"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBotBase } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotCore } from "@spt/models/eft/common/tables/IBotCore"; +import { Difficulty } from "@spt/models/eft/common/tables/IBotType"; +import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; +import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; +import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { MatchBotDetailsCacheService } from "@spt/services/MatchBotDetailsCacheService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class BotController { protected logger: ILogger; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected botGenerator: BotGenerator; protected botHelper: BotHelper; protected botDifficultyHelper: BotDifficultyHelper; + protected weightedRandomHelper: WeightedRandomHelper; protected botGenerationCacheService: BotGenerationCacheService; protected matchBotDetailsCacheService: MatchBotDetailsCacheService; protected localisationService: LocalisationService; @@ -38,7 +40,7 @@ export declare class BotController { protected cloner: ICloner; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - constructor(logger: ILogger, databaseServer: DatabaseServer, botGenerator: BotGenerator, botHelper: BotHelper, botDifficultyHelper: BotDifficultyHelper, botGenerationCacheService: BotGenerationCacheService, matchBotDetailsCacheService: MatchBotDetailsCacheService, localisationService: LocalisationService, seasonalEventService: SeasonalEventService, profileHelper: ProfileHelper, configServer: ConfigServer, applicationContext: ApplicationContext, randomUtil: RandomUtil, cloner: ICloner); + constructor(logger: ILogger, databaseService: DatabaseService, botGenerator: BotGenerator, botHelper: BotHelper, botDifficultyHelper: BotDifficultyHelper, weightedRandomHelper: WeightedRandomHelper, botGenerationCacheService: BotGenerationCacheService, matchBotDetailsCacheService: MatchBotDetailsCacheService, localisationService: LocalisationService, seasonalEventService: SeasonalEventService, profileHelper: ProfileHelper, configServer: ConfigServer, applicationContext: ApplicationContext, randomUtil: RandomUtil, cloner: ICloner); /** * Return the number of bot load-out varieties to be generated * @param type bot Type we want the load-out gen count for @@ -75,7 +77,7 @@ export declare class BotController { * @param sessionId Session id * @returns */ - protected generateBotsFirstTime(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + generateBotsFirstTime(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; /** * Create a BotGenerationDetails for the bot generator to use * @param condition Client data defining bot type and difficulty @@ -102,7 +104,7 @@ export declare class BotController { */ protected generateWithBotDetails(condition: Condition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; /** - * Generate a single bot and store it in the cache + * Generate a single bot and store in the cache * @param botGenerationDetails the bot details to generate the bot with * @param sessionId Session id * @param cacheKey the cache key to store the bot with @@ -115,7 +117,8 @@ export declare class BotController { * @param request Bot generation request object * @returns Single IBotBase object */ - protected returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected updateBotGenerationDetailsToRandomBoss(botGenerationDetails: BotGenerationDetails, possibleBossTypeWeights: Record): void; /** * Get the difficulty passed in, if its not "asonline", get selected difficulty from config * @param requestedDifficulty @@ -125,8 +128,9 @@ export declare class BotController { /** * Get the max number of bots allowed on a map * Looks up location player is entering when getting cap value + * @param location The map location cap was requested for * @returns cap number */ - getBotCap(): number; + getBotCap(location: string): number; getAiBotBrainTypes(): any; } diff --git a/TypeScript/24WebSocket/types/controllers/BuildController.d.ts b/TypeScript/24WebSocket/types/controllers/BuildController.d.ts index 22e8eb1..ed8adf6 100644 --- a/TypeScript/24WebSocket/types/controllers/BuildController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/BuildController.d.ts @@ -1,25 +1,27 @@ -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { ISetMagazineRequest } from "@spt-aki/models/eft/builds/ISetMagazineRequest"; -import { IPresetBuildActionRequestData } from "@spt-aki/models/eft/presetBuild/IPresetBuildActionRequestData"; -import { IRemoveBuildRequestData } from "@spt-aki/models/eft/presetBuild/IRemoveBuildRequestData"; -import { IUserBuilds } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { ISetMagazineRequest } from "@spt/models/eft/builds/ISetMagazineRequest"; +import { IPresetBuildActionRequestData } from "@spt/models/eft/presetBuild/IPresetBuildActionRequestData"; +import { IRemoveBuildRequestData } from "@spt/models/eft/presetBuild/IRemoveBuildRequestData"; +import { IUserBuilds } from "@spt/models/eft/profile/ISptProfile"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; export declare class BuildController { protected logger: ILogger; protected hashUtil: HashUtil; protected eventOutputHolder: EventOutputHolder; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected profileHelper: ProfileHelper; + protected localisationService: LocalisationService; protected itemHelper: ItemHelper; protected saveServer: SaveServer; protected cloner: ICloner; - constructor(logger: ILogger, hashUtil: HashUtil, eventOutputHolder: EventOutputHolder, databaseServer: DatabaseServer, profileHelper: ProfileHelper, itemHelper: ItemHelper, saveServer: SaveServer, cloner: ICloner); + constructor(logger: ILogger, hashUtil: HashUtil, eventOutputHolder: EventOutputHolder, databaseService: DatabaseService, profileHelper: ProfileHelper, localisationService: LocalisationService, itemHelper: ItemHelper, saveServer: SaveServer, cloner: ICloner); /** Handle client/handbook/builds/my/list */ getUserBuilds(sessionID: string): IUserBuilds; /** Handle client/builds/weapon/save */ diff --git a/TypeScript/24WebSocket/types/controllers/ClientLogController.d.ts b/TypeScript/24WebSocket/types/controllers/ClientLogController.d.ts index 5d70ba4..6356c03 100644 --- a/TypeScript/24WebSocket/types/controllers/ClientLogController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/ClientLogController.d.ts @@ -1,5 +1,5 @@ -import { IClientLogRequest } from "@spt-aki/models/spt/logging/IClientLogRequest"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; +import { IClientLogRequest } from "@spt/models/spt/logging/IClientLogRequest"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; export declare class ClientLogController { protected logger: ILogger; constructor(logger: ILogger); diff --git a/TypeScript/24WebSocket/types/controllers/CustomizationController.d.ts b/TypeScript/24WebSocket/types/controllers/CustomizationController.d.ts index 27de49a..028341a 100644 --- a/TypeScript/24WebSocket/types/controllers/CustomizationController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/CustomizationController.d.ts @@ -1,18 +1,18 @@ -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { ISuit } from "@spt-aki/models/eft/common/tables/ITrader"; -import { ClothingItem, IBuyClothingRequestData } from "@spt-aki/models/eft/customization/IBuyClothingRequestData"; -import { IWearClothingRequestData } from "@spt-aki/models/eft/customization/IWearClothingRequestData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { ISuit } from "@spt/models/eft/common/tables/ITrader"; +import { ClothingItem, IBuyClothingRequestData } from "@spt/models/eft/customization/IBuyClothingRequestData"; +import { IWearClothingRequestData } from "@spt/models/eft/customization/IWearClothingRequestData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; export declare class CustomizationController { protected logger: ILogger; protected eventOutputHolder: EventOutputHolder; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected saveServer: SaveServer; protected localisationService: LocalisationService; protected profileHelper: ProfileHelper; @@ -20,7 +20,7 @@ export declare class CustomizationController { lowerParentId: string; upperParentId: string; }; - constructor(logger: ILogger, eventOutputHolder: EventOutputHolder, databaseServer: DatabaseServer, saveServer: SaveServer, localisationService: LocalisationService, profileHelper: ProfileHelper); + constructor(logger: ILogger, eventOutputHolder: EventOutputHolder, databaseService: DatabaseService, saveServer: SaveServer, localisationService: LocalisationService, profileHelper: ProfileHelper); /** * Get purchasable clothing items from trader that match players side (usec/bear) * @param traderID trader to look up clothing for diff --git a/TypeScript/24WebSocket/types/controllers/DialogueController.d.ts b/TypeScript/24WebSocket/types/controllers/DialogueController.d.ts index 2ad90c4..c15d724 100644 --- a/TypeScript/24WebSocket/types/controllers/DialogueController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/DialogueController.d.ts @@ -1,28 +1,30 @@ -import { IDialogueChatBot } from "@spt-aki/helpers/Dialogue/IDialogueChatBot"; -import { DialogueHelper } from "@spt-aki/helpers/DialogueHelper"; -import { IFriendRequestData } from "@spt-aki/models/eft/dialog/IFriendRequestData"; -import { IFriendRequestSendResponse } from "@spt-aki/models/eft/dialog/IFriendRequestSendResponse"; -import { IGetAllAttachmentsResponse } from "@spt-aki/models/eft/dialog/IGetAllAttachmentsResponse"; -import { IGetFriendListDataResponse } from "@spt-aki/models/eft/dialog/IGetFriendListDataResponse"; -import { IGetMailDialogViewRequestData } from "@spt-aki/models/eft/dialog/IGetMailDialogViewRequestData"; -import { IGetMailDialogViewResponseData } from "@spt-aki/models/eft/dialog/IGetMailDialogViewResponseData"; -import { ISendMessageRequest } from "@spt-aki/models/eft/dialog/ISendMessageRequest"; -import { Dialogue, DialogueInfo, IAkiProfile, IUserDialogInfo, Message } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { MessageType } from "@spt-aki/models/enums/MessageType"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { MailSendService } from "@spt-aki/services/MailSendService"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { IDialogueChatBot } from "@spt/helpers/Dialogue/IDialogueChatBot"; +import { DialogueHelper } from "@spt/helpers/DialogueHelper"; +import { IFriendRequestData } from "@spt/models/eft/dialog/IFriendRequestData"; +import { IFriendRequestSendResponse } from "@spt/models/eft/dialog/IFriendRequestSendResponse"; +import { IGetAllAttachmentsResponse } from "@spt/models/eft/dialog/IGetAllAttachmentsResponse"; +import { IGetFriendListDataResponse } from "@spt/models/eft/dialog/IGetFriendListDataResponse"; +import { IGetMailDialogViewRequestData } from "@spt/models/eft/dialog/IGetMailDialogViewRequestData"; +import { IGetMailDialogViewResponseData } from "@spt/models/eft/dialog/IGetMailDialogViewResponseData"; +import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; +import { Dialogue, DialogueInfo, ISptProfile, IUserDialogInfo, Message } from "@spt/models/eft/profile/ISptProfile"; +import { MessageType } from "@spt/models/enums/MessageType"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { MailSendService } from "@spt/services/MailSendService"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class DialogueController { protected logger: ILogger; protected saveServer: SaveServer; protected timeUtil: TimeUtil; protected dialogueHelper: DialogueHelper; protected mailSendService: MailSendService; + protected localisationService: LocalisationService; protected configServer: ConfigServer; protected dialogueChatBots: IDialogueChatBot[]; - constructor(logger: ILogger, saveServer: SaveServer, timeUtil: TimeUtil, dialogueHelper: DialogueHelper, mailSendService: MailSendService, configServer: ConfigServer, dialogueChatBots: IDialogueChatBot[]); + constructor(logger: ILogger, saveServer: SaveServer, timeUtil: TimeUtil, dialogueHelper: DialogueHelper, mailSendService: MailSendService, localisationService: LocalisationService, configServer: ConfigServer, dialogueChatBots: IDialogueChatBot[]); registerChatBot(chatBot: IDialogueChatBot): void; /** Handle onUpdate spt event */ update(): void; @@ -53,7 +55,7 @@ export declare class DialogueController { * @param sessionID Player id * @returns IUserDialogInfo array */ - getDialogueUsers(dialog: Dialogue, messageType: MessageType, sessionID: string): IUserDialogInfo[]; + getDialogueUsers(dialog: Dialogue, messageType: MessageType, sessionID: string): IUserDialogInfo[] | undefined; /** * Handle client/mail/dialog/view * Handle player clicking 'messenger' and seeing all the messages they've recieved @@ -70,14 +72,14 @@ export declare class DialogueController { * @param request get dialog request (params used when dialog doesnt exist in profile) * @returns Dialogue */ - protected getDialogByIdFromProfile(profile: IAkiProfile, request: IGetMailDialogViewRequestData): Dialogue; + protected getDialogByIdFromProfile(profile: ISptProfile, request: IGetMailDialogViewRequestData): Dialogue; /** * Get the users involved in a mail between two entities * @param fullProfile Player profile * @param dialogUsers The participants of the mail * @returns IUserDialogInfo array */ - protected getProfilesForMail(fullProfile: IAkiProfile, dialogUsers: IUserDialogInfo[]): IUserDialogInfo[]; + protected getProfilesForMail(fullProfile: ISptProfile, dialogUsers?: IUserDialogInfo[]): IUserDialogInfo[]; /** * Get a count of messages with attachments from a particular dialog * @param sessionID Session id @@ -114,7 +116,7 @@ export declare class DialogueController { * @param sessionId Session id * @returns IGetAllAttachmentsResponse */ - getAllAttachments(dialogueId: string, sessionId: string): IGetAllAttachmentsResponse; + getAllAttachments(dialogueId: string, sessionId: string): IGetAllAttachmentsResponse | undefined; /** client/mail/msg/send */ sendMessage(sessionId: string, request: ISendMessageRequest): string; /** diff --git a/TypeScript/24WebSocket/types/controllers/GameController.d.ts b/TypeScript/24WebSocket/types/controllers/GameController.d.ts index f64e42d..533a81c 100644 --- a/TypeScript/24WebSocket/types/controllers/GameController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/GameController.d.ts @@ -1,49 +1,49 @@ -import { ApplicationContext } from "@spt-aki/context/ApplicationContext"; -import { HideoutHelper } from "@spt-aki/helpers/HideoutHelper"; -import { HttpServerHelper } from "@spt-aki/helpers/HttpServerHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { PreAkiModLoader } from "@spt-aki/loaders/PreAkiModLoader"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { ICheckVersionResponse } from "@spt-aki/models/eft/game/ICheckVersionResponse"; -import { ICurrentGroupResponse } from "@spt-aki/models/eft/game/ICurrentGroupResponse"; -import { IGameConfigResponse } from "@spt-aki/models/eft/game/IGameConfigResponse"; -import { IGameKeepAliveResponse } from "@spt-aki/models/eft/game/IGameKeepAliveResponse"; -import { IGameModeRequestData } from "@spt-aki/models/eft/game/IGameModeRequestData"; -import { IGetRaidTimeRequest } from "@spt-aki/models/eft/game/IGetRaidTimeRequest"; -import { IGetRaidTimeResponse } from "@spt-aki/models/eft/game/IGetRaidTimeResponse"; -import { IServerDetails } from "@spt-aki/models/eft/game/IServerDetails"; -import { IAkiProfile } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { IBotConfig } from "@spt-aki/models/spt/config/IBotConfig"; -import { ICoreConfig } from "@spt-aki/models/spt/config/ICoreConfig"; -import { IHideoutConfig } from "@spt-aki/models/spt/config/IHideoutConfig"; -import { IHttpConfig } from "@spt-aki/models/spt/config/IHttpConfig"; -import { ILocationConfig } from "@spt-aki/models/spt/config/ILocationConfig"; -import { ILootConfig } from "@spt-aki/models/spt/config/ILootConfig"; -import { IPmcConfig } from "@spt-aki/models/spt/config/IPmcConfig"; -import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { CustomLocationWaveService } from "@spt-aki/services/CustomLocationWaveService"; -import { GiftService } from "@spt-aki/services/GiftService"; -import { ItemBaseClassService } from "@spt-aki/services/ItemBaseClassService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { OpenZoneService } from "@spt-aki/services/OpenZoneService"; -import { ProfileActivityService } from "@spt-aki/services/ProfileActivityService"; -import { ProfileFixerService } from "@spt-aki/services/ProfileFixerService"; -import { RaidTimeAdjustmentService } from "@spt-aki/services/RaidTimeAdjustmentService"; -import { SeasonalEventService } from "@spt-aki/services/SeasonalEventService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { ICheckVersionResponse } from "@spt/models/eft/game/ICheckVersionResponse"; +import { ICurrentGroupResponse } from "@spt/models/eft/game/ICurrentGroupResponse"; +import { IGameConfigResponse } from "@spt/models/eft/game/IGameConfigResponse"; +import { IGameKeepAliveResponse } from "@spt/models/eft/game/IGameKeepAliveResponse"; +import { IGameModeRequestData } from "@spt/models/eft/game/IGameModeRequestData"; +import { IGetRaidTimeRequest } from "@spt/models/eft/game/IGetRaidTimeRequest"; +import { IGetRaidTimeResponse } from "@spt/models/eft/game/IGetRaidTimeResponse"; +import { IServerDetails } from "@spt/models/eft/game/IServerDetails"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; +import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; +import { ICoreConfig } from "@spt/models/spt/config/ICoreConfig"; +import { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { ILootConfig } from "@spt/models/spt/config/ILootConfig"; +import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { CustomLocationWaveService } from "@spt/services/CustomLocationWaveService"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { GiftService } from "@spt/services/GiftService"; +import { ItemBaseClassService } from "@spt/services/ItemBaseClassService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { OpenZoneService } from "@spt/services/OpenZoneService"; +import { ProfileActivityService } from "@spt/services/ProfileActivityService"; +import { ProfileFixerService } from "@spt/services/ProfileFixerService"; +import { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class GameController { protected logger: ILogger; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected timeUtil: TimeUtil; protected hashUtil: HashUtil; - protected preAkiModLoader: PreAkiModLoader; + protected preSptModLoader: PreSptModLoader; protected httpServerHelper: HttpServerHelper; protected randomUtil: RandomUtil; protected hideoutHelper: HideoutHelper; @@ -68,14 +68,17 @@ export declare class GameController { protected pmcConfig: IPmcConfig; protected lootConfig: ILootConfig; protected botConfig: IBotConfig; - constructor(logger: ILogger, databaseServer: DatabaseServer, timeUtil: TimeUtil, hashUtil: HashUtil, preAkiModLoader: PreAkiModLoader, httpServerHelper: HttpServerHelper, randomUtil: RandomUtil, hideoutHelper: HideoutHelper, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, customLocationWaveService: CustomLocationWaveService, openZoneService: OpenZoneService, seasonalEventService: SeasonalEventService, itemBaseClassService: ItemBaseClassService, giftService: GiftService, raidTimeAdjustmentService: RaidTimeAdjustmentService, profileActivityService: ProfileActivityService, applicationContext: ApplicationContext, configServer: ConfigServer, cloner: ICloner); + constructor(logger: ILogger, databaseService: DatabaseService, timeUtil: TimeUtil, hashUtil: HashUtil, preSptModLoader: PreSptModLoader, httpServerHelper: HttpServerHelper, randomUtil: RandomUtil, hideoutHelper: HideoutHelper, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, customLocationWaveService: CustomLocationWaveService, openZoneService: OpenZoneService, seasonalEventService: SeasonalEventService, itemBaseClassService: ItemBaseClassService, giftService: GiftService, raidTimeAdjustmentService: RaidTimeAdjustmentService, profileActivityService: ProfileActivityService, applicationContext: ApplicationContext, configServer: ConfigServer, cloner: ICloner); load(): void; /** * Handle client/game/start */ gameStart(_url: string, _info: IEmptyRequestData, sessionID: string, startTimeStampMS: number): void; - protected adjustHideoutCraftTimes(): void; - protected adjustHideoutBuildTimes(): void; + protected adjustHideoutCraftTimes(overrideSeconds: number): void; + /** + * Adjust all hideout craft times to be no higher than the override + */ + protected adjustHideoutBuildTimes(overrideSeconds: number): void; protected adjustLocationBotValues(): void; /** * Out of date/incorrectly made trader mods forget this data @@ -122,7 +125,7 @@ export declare class GameController { * @param pmcProfile Player profile */ protected warnOnActiveBotReloadSkill(pmcProfile: IPmcData): void; - protected flagAllItemsInDbAsSellableOnFlea(): void; + protected setAllDbItemsAsSellableOnFlea(): void; /** * When player logs in, iterate over all active effects and reduce timer * @param pmcProfile Profile to adjust values for @@ -150,7 +153,7 @@ export declare class GameController { * Get a list of installed mods and save their details to the profile being used * @param fullProfile Profile to add mod details to */ - protected saveActiveModsToProfile(fullProfile: IAkiProfile): void; + protected saveActiveModsToProfile(fullProfile: ISptProfile): void; /** * Check for any missing assorts inside each traders assort.json data, checking against traders questassort.json */ @@ -164,7 +167,7 @@ export declare class GameController { * Check for a dialog with the key 'undefined', and remove it * @param fullProfile Profile to check for dialog in */ - protected checkForAndRemoveUndefinedDialogs(fullProfile: IAkiProfile): void; + protected checkForAndRemoveUndefinedDialogs(fullProfile: ISptProfile): void; /** * Blank out the "test" mail message from prapor */ @@ -173,5 +176,5 @@ export declare class GameController { * Make non-trigger-spawned raiders spawn earlier + always */ protected adjustLabsRaiderSpawnRate(): void; - protected logProfileDetails(fullProfile: IAkiProfile): void; + protected logProfileDetails(fullProfile: ISptProfile): void; } diff --git a/TypeScript/24WebSocket/types/controllers/HandbookController.d.ts b/TypeScript/24WebSocket/types/controllers/HandbookController.d.ts index 4820f21..0743d30 100644 --- a/TypeScript/24WebSocket/types/controllers/HandbookController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/HandbookController.d.ts @@ -1,5 +1,5 @@ -import { HandbookHelper } from "@spt-aki/helpers/HandbookHelper"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; +import { HandbookHelper } from "@spt/helpers/HandbookHelper"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; export declare class HandbookController { protected databaseServer: DatabaseServer; protected handbookHelper: HandbookHelper; diff --git a/TypeScript/24WebSocket/types/controllers/HealthController.d.ts b/TypeScript/24WebSocket/types/controllers/HealthController.d.ts index 5b2c170..5482283 100644 --- a/TypeScript/24WebSocket/types/controllers/HealthController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/HealthController.d.ts @@ -1,19 +1,19 @@ -import { HealthHelper } from "@spt-aki/helpers/HealthHelper"; -import { InventoryHelper } from "@spt-aki/helpers/InventoryHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IHealthTreatmentRequestData } from "@spt-aki/models/eft/health/IHealthTreatmentRequestData"; -import { IOffraidEatRequestData } from "@spt-aki/models/eft/health/IOffraidEatRequestData"; -import { IOffraidHealRequestData } from "@spt-aki/models/eft/health/IOffraidHealRequestData"; -import { ISyncHealthRequestData } from "@spt-aki/models/eft/health/ISyncHealthRequestData"; -import { IWorkoutData } from "@spt-aki/models/eft/health/IWorkoutData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { PaymentService } from "@spt-aki/services/PaymentService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IHealthTreatmentRequestData } from "@spt/models/eft/health/IHealthTreatmentRequestData"; +import { IOffraidEatRequestData } from "@spt/models/eft/health/IOffraidEatRequestData"; +import { IOffraidHealRequestData } from "@spt/models/eft/health/IOffraidHealRequestData"; +import { ISyncHealthRequestData } from "@spt/models/eft/health/ISyncHealthRequestData"; +import { IWorkoutData } from "@spt/models/eft/health/IWorkoutData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { PaymentService } from "@spt/services/PaymentService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class HealthController { protected logger: ILogger; protected eventOutputHolder: EventOutputHolder; diff --git a/TypeScript/24WebSocket/types/controllers/HideoutController.d.ts b/TypeScript/24WebSocket/types/controllers/HideoutController.d.ts index 600c22d..e9d1ed9 100644 --- a/TypeScript/24WebSocket/types/controllers/HideoutController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/HideoutController.d.ts @@ -1,50 +1,50 @@ -import { ScavCaseRewardGenerator } from "@spt-aki/generators/ScavCaseRewardGenerator"; -import { HideoutHelper } from "@spt-aki/helpers/HideoutHelper"; -import { InventoryHelper } from "@spt-aki/helpers/InventoryHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper"; -import { PresetHelper } from "@spt-aki/helpers/PresetHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { HideoutArea, ITaskConditionCounter, Product } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { HideoutUpgradeCompleteRequestData } from "@spt-aki/models/eft/hideout/HideoutUpgradeCompleteRequestData"; -import { IHandleQTEEventRequestData } from "@spt-aki/models/eft/hideout/IHandleQTEEventRequestData"; -import { IHideoutArea, Stage } from "@spt-aki/models/eft/hideout/IHideoutArea"; -import { IHideoutCancelProductionRequestData } from "@spt-aki/models/eft/hideout/IHideoutCancelProductionRequestData"; -import { IHideoutContinuousProductionStartRequestData } from "@spt-aki/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; -import { IHideoutImproveAreaRequestData } from "@spt-aki/models/eft/hideout/IHideoutImproveAreaRequestData"; -import { IHideoutProduction } from "@spt-aki/models/eft/hideout/IHideoutProduction"; -import { IHideoutPutItemInRequestData } from "@spt-aki/models/eft/hideout/IHideoutPutItemInRequestData"; -import { IHideoutScavCaseStartRequestData } from "@spt-aki/models/eft/hideout/IHideoutScavCaseStartRequestData"; -import { IHideoutSingleProductionStartRequestData } from "@spt-aki/models/eft/hideout/IHideoutSingleProductionStartRequestData"; -import { IHideoutTakeItemOutRequestData } from "@spt-aki/models/eft/hideout/IHideoutTakeItemOutRequestData"; -import { IHideoutTakeProductionRequestData } from "@spt-aki/models/eft/hideout/IHideoutTakeProductionRequestData"; -import { IHideoutToggleAreaRequestData } from "@spt-aki/models/eft/hideout/IHideoutToggleAreaRequestData"; -import { IHideoutUpgradeRequestData } from "@spt-aki/models/eft/hideout/IHideoutUpgradeRequestData"; -import { IQteData } from "@spt-aki/models/eft/hideout/IQteData"; -import { IRecordShootingRangePoints } from "@spt-aki/models/eft/hideout/IRecordShootingRangePoints"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { HideoutAreas } from "@spt-aki/models/enums/HideoutAreas"; -import { IHideoutConfig } from "@spt-aki/models/spt/config/IHideoutConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { FenceService } from "@spt-aki/services/FenceService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { PlayerService } from "@spt-aki/services/PlayerService"; -import { ProfileActivityService } from "@spt-aki/services/ProfileActivityService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { ScavCaseRewardGenerator } from "@spt/generators/ScavCaseRewardGenerator"; +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PaymentHelper } from "@spt/helpers/PaymentHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { HideoutArea, ITaskConditionCounter, Product } from "@spt/models/eft/common/tables/IBotBase"; +import { HideoutUpgradeCompleteRequestData } from "@spt/models/eft/hideout/HideoutUpgradeCompleteRequestData"; +import { IHandleQTEEventRequestData } from "@spt/models/eft/hideout/IHandleQTEEventRequestData"; +import { IHideoutArea, Stage } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutCancelProductionRequestData } from "@spt/models/eft/hideout/IHideoutCancelProductionRequestData"; +import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; +import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; +import { IHideoutScavCaseStartRequestData } from "@spt/models/eft/hideout/IHideoutScavCaseStartRequestData"; +import { IHideoutSingleProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutSingleProductionStartRequestData"; +import { IHideoutTakeItemOutRequestData } from "@spt/models/eft/hideout/IHideoutTakeItemOutRequestData"; +import { IHideoutTakeProductionRequestData } from "@spt/models/eft/hideout/IHideoutTakeProductionRequestData"; +import { IHideoutToggleAreaRequestData } from "@spt/models/eft/hideout/IHideoutToggleAreaRequestData"; +import { IHideoutUpgradeRequestData } from "@spt/models/eft/hideout/IHideoutUpgradeRequestData"; +import { IQteData } from "@spt/models/eft/hideout/IQteData"; +import { IRecordShootingRangePoints } from "@spt/models/eft/hideout/IRecordShootingRangePoints"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { HideoutAreas } from "@spt/models/enums/HideoutAreas"; +import { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { FenceService } from "@spt/services/FenceService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { PlayerService } from "@spt/services/PlayerService"; +import { ProfileActivityService } from "@spt/services/ProfileActivityService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class HideoutController { protected logger: ILogger; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected randomUtil: RandomUtil; protected inventoryHelper: InventoryHelper; protected itemHelper: ItemHelper; @@ -65,7 +65,7 @@ export declare class HideoutController { /** Key used in TaskConditionCounters array */ protected static nameTaskConditionCountersCrafting: string; protected hideoutConfig: IHideoutConfig; - constructor(logger: ILogger, hashUtil: HashUtil, timeUtil: TimeUtil, databaseServer: DatabaseServer, randomUtil: RandomUtil, inventoryHelper: InventoryHelper, itemHelper: ItemHelper, saveServer: SaveServer, playerService: PlayerService, presetHelper: PresetHelper, paymentHelper: PaymentHelper, eventOutputHolder: EventOutputHolder, httpResponse: HttpResponseUtil, profileHelper: ProfileHelper, hideoutHelper: HideoutHelper, scavCaseRewardGenerator: ScavCaseRewardGenerator, localisationService: LocalisationService, profileActivityService: ProfileActivityService, configServer: ConfigServer, fenceService: FenceService, cloner: ICloner); + constructor(logger: ILogger, hashUtil: HashUtil, timeUtil: TimeUtil, databaseService: DatabaseService, randomUtil: RandomUtil, inventoryHelper: InventoryHelper, itemHelper: ItemHelper, saveServer: SaveServer, playerService: PlayerService, presetHelper: PresetHelper, paymentHelper: PaymentHelper, eventOutputHolder: EventOutputHolder, httpResponse: HttpResponseUtil, profileHelper: ProfileHelper, hideoutHelper: HideoutHelper, scavCaseRewardGenerator: ScavCaseRewardGenerator, localisationService: LocalisationService, profileActivityService: ProfileActivityService, configServer: ConfigServer, fenceService: FenceService, cloner: ICloner); /** * Handle HideoutUpgrade event * Start a hideout area upgrade diff --git a/TypeScript/24WebSocket/types/controllers/InraidController.d.ts b/TypeScript/24WebSocket/types/controllers/InraidController.d.ts index 8749ba7..87f419b 100644 --- a/TypeScript/24WebSocket/types/controllers/InraidController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/InraidController.d.ts @@ -1,35 +1,37 @@ -import { ApplicationContext } from "@spt-aki/context/ApplicationContext"; -import { PlayerScavGenerator } from "@spt-aki/generators/PlayerScavGenerator"; -import { HealthHelper } from "@spt-aki/helpers/HealthHelper"; -import { InRaidHelper } from "@spt-aki/helpers/InRaidHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { QuestHelper } from "@spt-aki/helpers/QuestHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { IRegisterPlayerRequestData } from "@spt-aki/models/eft/inRaid/IRegisterPlayerRequestData"; -import { ISaveProgressRequestData } from "@spt-aki/models/eft/inRaid/ISaveProgressRequestData"; -import { PlayerRaidEndState } from "@spt-aki/models/enums/PlayerRaidEndState"; -import { IAirdropConfig } from "@spt-aki/models/spt/config/IAirdropConfig"; -import { IBTRConfig } from "@spt-aki/models/spt/config/IBTRConfig"; -import { IHideoutConfig } from "@spt-aki/models/spt/config/IHideoutConfig"; -import { IInRaidConfig } from "@spt-aki/models/spt/config/IInRaidConfig"; -import { ILocationConfig } from "@spt-aki/models/spt/config/ILocationConfig"; -import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig"; -import { ITraderConfig } from "@spt-aki/models/spt/config/ITraderConfig"; -import { ITraderServiceModel } from "@spt-aki/models/spt/services/ITraderServiceModel"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { InsuranceService } from "@spt-aki/services/InsuranceService"; -import { MailSendService } from "@spt-aki/services/MailSendService"; -import { MatchBotDetailsCacheService } from "@spt-aki/services/MatchBotDetailsCacheService"; -import { PmcChatResponseService } from "@spt-aki/services/PmcChatResponseService"; -import { TraderServicesService } from "@spt-aki/services/TraderServicesService"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { QuestHelper } from "@spt/helpers/QuestHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IRegisterPlayerRequestData } from "@spt/models/eft/inRaid/IRegisterPlayerRequestData"; +import { ISaveProgressRequestData } from "@spt/models/eft/inRaid/ISaveProgressRequestData"; +import { PlayerRaidEndState } from "@spt/models/enums/PlayerRaidEndState"; +import { IAirdropConfig } from "@spt/models/spt/config/IAirdropConfig"; +import { IBTRConfig } from "@spt/models/spt/config/IBTRConfig"; +import { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig"; +import { ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; +import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { InsuranceService } from "@spt/services/InsuranceService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { MailSendService } from "@spt/services/MailSendService"; +import { MatchBotDetailsCacheService } from "@spt/services/MatchBotDetailsCacheService"; +import { PmcChatResponseService } from "@spt/services/PmcChatResponseService"; +import { TraderServicesService } from "@spt/services/TraderServicesService"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; /** * Logic for handling In Raid callbacks */ @@ -37,7 +39,7 @@ export declare class InraidController { protected logger: ILogger; protected saveServer: SaveServer; protected timeUtil: TimeUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected pmcChatResponseService: PmcChatResponseService; protected matchBotDetailsCacheService: MatchBotDetailsCacheService; protected questHelper: QuestHelper; @@ -47,6 +49,7 @@ export declare class InraidController { protected healthHelper: HealthHelper; protected traderHelper: TraderHelper; protected traderServicesService: TraderServicesService; + protected localisationService: LocalisationService; protected insuranceService: InsuranceService; protected inRaidHelper: InRaidHelper; protected applicationContext: ApplicationContext; @@ -60,7 +63,8 @@ export declare class InraidController { protected locationConfig: ILocationConfig; protected ragfairConfig: IRagfairConfig; protected hideoutConfig: IHideoutConfig; - constructor(logger: ILogger, saveServer: SaveServer, timeUtil: TimeUtil, databaseServer: DatabaseServer, pmcChatResponseService: PmcChatResponseService, matchBotDetailsCacheService: MatchBotDetailsCacheService, questHelper: QuestHelper, itemHelper: ItemHelper, profileHelper: ProfileHelper, playerScavGenerator: PlayerScavGenerator, healthHelper: HealthHelper, traderHelper: TraderHelper, traderServicesService: TraderServicesService, insuranceService: InsuranceService, inRaidHelper: InRaidHelper, applicationContext: ApplicationContext, configServer: ConfigServer, mailSendService: MailSendService, randomUtil: RandomUtil); + protected botConfig: IBotConfig; + constructor(logger: ILogger, saveServer: SaveServer, timeUtil: TimeUtil, databaseService: DatabaseService, pmcChatResponseService: PmcChatResponseService, matchBotDetailsCacheService: MatchBotDetailsCacheService, questHelper: QuestHelper, itemHelper: ItemHelper, profileHelper: ProfileHelper, playerScavGenerator: PlayerScavGenerator, healthHelper: HealthHelper, traderHelper: TraderHelper, traderServicesService: TraderServicesService, localisationService: LocalisationService, insuranceService: InsuranceService, inRaidHelper: InRaidHelper, applicationContext: ApplicationContext, configServer: ConfigServer, mailSendService: MailSendService, randomUtil: RandomUtil); /** * Save locationId to active profiles inraid object AND app context * @param sessionID Session id @@ -187,4 +191,5 @@ export declare class InraidController { itemDelivery(sessionId: string, traderId: string, items: Item[]): void; getTraitorScavHostileChance(url: string, sessionID: string): number; getSandboxMaxPatrolValue(url: string, sessionID: string): number; + getBossConvertSettings(url: string, sessionId: string): string[]; } diff --git a/TypeScript/24WebSocket/types/controllers/InsuranceController.d.ts b/TypeScript/24WebSocket/types/controllers/InsuranceController.d.ts index ccb5c18..f921b83 100644 --- a/TypeScript/24WebSocket/types/controllers/InsuranceController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/InsuranceController.d.ts @@ -1,30 +1,31 @@ -import { DialogueHelper } from "@spt-aki/helpers/DialogueHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { WeightedRandomHelper } from "@spt-aki/helpers/WeightedRandomHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { IGetInsuranceCostRequestData } from "@spt-aki/models/eft/insurance/IGetInsuranceCostRequestData"; -import { IGetInsuranceCostResponseData } from "@spt-aki/models/eft/insurance/IGetInsuranceCostResponseData"; -import { IInsureRequestData } from "@spt-aki/models/eft/insurance/IInsureRequestData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { Insurance } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { IInsuranceConfig } from "@spt-aki/models/spt/config/IInsuranceConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { InsuranceService } from "@spt-aki/services/InsuranceService"; -import { MailSendService } from "@spt-aki/services/MailSendService"; -import { PaymentService } from "@spt-aki/services/PaymentService"; -import { RagfairPriceService } from "@spt-aki/services/RagfairPriceService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { MathUtil } from "@spt-aki/utils/MathUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { DialogueHelper } from "@spt/helpers/DialogueHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IGetInsuranceCostRequestData } from "@spt/models/eft/insurance/IGetInsuranceCostRequestData"; +import { IGetInsuranceCostResponseData } from "@spt/models/eft/insurance/IGetInsuranceCostResponseData"; +import { IInsureRequestData } from "@spt/models/eft/insurance/IInsureRequestData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { Insurance } from "@spt/models/eft/profile/ISptProfile"; +import { IInsuranceConfig } from "@spt/models/spt/config/IInsuranceConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { InsuranceService } from "@spt/services/InsuranceService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { MailSendService } from "@spt/services/MailSendService"; +import { PaymentService } from "@spt/services/PaymentService"; +import { RagfairPriceService } from "@spt/services/RagfairPriceService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { MathUtil } from "@spt/utils/MathUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class InsuranceController { protected logger: ILogger; protected randomUtil: RandomUtil; @@ -33,7 +34,7 @@ export declare class InsuranceController { protected eventOutputHolder: EventOutputHolder; protected timeUtil: TimeUtil; protected saveServer: SaveServer; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; protected dialogueHelper: DialogueHelper; @@ -43,11 +44,11 @@ export declare class InsuranceController { protected insuranceService: InsuranceService; protected mailSendService: MailSendService; protected ragfairPriceService: RagfairPriceService; + protected localisationService: LocalisationService; protected configServer: ConfigServer; protected cloner: ICloner; protected insuranceConfig: IInsuranceConfig; - protected roubleTpl: string; - constructor(logger: ILogger, randomUtil: RandomUtil, mathUtil: MathUtil, hashUtil: HashUtil, eventOutputHolder: EventOutputHolder, timeUtil: TimeUtil, saveServer: SaveServer, databaseServer: DatabaseServer, itemHelper: ItemHelper, profileHelper: ProfileHelper, dialogueHelper: DialogueHelper, weightedRandomHelper: WeightedRandomHelper, traderHelper: TraderHelper, paymentService: PaymentService, insuranceService: InsuranceService, mailSendService: MailSendService, ragfairPriceService: RagfairPriceService, configServer: ConfigServer, cloner: ICloner); + constructor(logger: ILogger, randomUtil: RandomUtil, mathUtil: MathUtil, hashUtil: HashUtil, eventOutputHolder: EventOutputHolder, timeUtil: TimeUtil, saveServer: SaveServer, databaseService: DatabaseService, itemHelper: ItemHelper, profileHelper: ProfileHelper, dialogueHelper: DialogueHelper, weightedRandomHelper: WeightedRandomHelper, traderHelper: TraderHelper, paymentService: PaymentService, insuranceService: InsuranceService, mailSendService: MailSendService, ragfairPriceService: RagfairPriceService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); /** * Process insurance items of all profiles prior to being given back to the player through the mail service. * @@ -181,9 +182,9 @@ export declare class InsuranceController { * * @param traderId The ID of the trader who insured the item. * @param insuredItem Optional. The item to roll for. Only used for logging. - * @returns true if the insured item should be removed from inventory, false otherwise, or null on error. + * @returns true if the insured item should be removed from inventory, false otherwise, or undefined on error. */ - protected rollForDelete(traderId: string, insuredItem?: Item): boolean | null; + protected rollForDelete(traderId: string, insuredItem?: Item): boolean | undefined; /** * Handle Insure event * Add insurance to an item diff --git a/TypeScript/24WebSocket/types/controllers/InventoryController.d.ts b/TypeScript/24WebSocket/types/controllers/InventoryController.d.ts index 0d7f5ad..40bb084 100644 --- a/TypeScript/24WebSocket/types/controllers/InventoryController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/InventoryController.d.ts @@ -1,65 +1,69 @@ -import { LootGenerator } from "@spt-aki/generators/LootGenerator"; -import { HideoutHelper } from "@spt-aki/helpers/HideoutHelper"; -import { InventoryHelper } from "@spt-aki/helpers/InventoryHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper"; -import { PresetHelper } from "@spt-aki/helpers/PresetHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { QuestHelper } from "@spt-aki/helpers/QuestHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IInventoryBindRequestData } from "@spt-aki/models/eft/inventory/IInventoryBindRequestData"; -import { IInventoryCreateMarkerRequestData } from "@spt-aki/models/eft/inventory/IInventoryCreateMarkerRequestData"; -import { IInventoryDeleteMarkerRequestData } from "@spt-aki/models/eft/inventory/IInventoryDeleteMarkerRequestData"; -import { IInventoryEditMarkerRequestData } from "@spt-aki/models/eft/inventory/IInventoryEditMarkerRequestData"; -import { IInventoryExamineRequestData } from "@spt-aki/models/eft/inventory/IInventoryExamineRequestData"; -import { IInventoryFoldRequestData } from "@spt-aki/models/eft/inventory/IInventoryFoldRequestData"; -import { IInventoryMergeRequestData } from "@spt-aki/models/eft/inventory/IInventoryMergeRequestData"; -import { IInventoryMoveRequestData } from "@spt-aki/models/eft/inventory/IInventoryMoveRequestData"; -import { IInventoryReadEncyclopediaRequestData } from "@spt-aki/models/eft/inventory/IInventoryReadEncyclopediaRequestData"; -import { IInventoryRemoveRequestData } from "@spt-aki/models/eft/inventory/IInventoryRemoveRequestData"; -import { IInventorySortRequestData } from "@spt-aki/models/eft/inventory/IInventorySortRequestData"; -import { IInventorySplitRequestData } from "@spt-aki/models/eft/inventory/IInventorySplitRequestData"; -import { IInventorySwapRequestData } from "@spt-aki/models/eft/inventory/IInventorySwapRequestData"; -import { IInventoryTagRequestData } from "@spt-aki/models/eft/inventory/IInventoryTagRequestData"; -import { IInventoryToggleRequestData } from "@spt-aki/models/eft/inventory/IInventoryToggleRequestData"; -import { IInventoryTransferRequestData } from "@spt-aki/models/eft/inventory/IInventoryTransferRequestData"; -import { IOpenRandomLootContainerRequestData } from "@spt-aki/models/eft/inventory/IOpenRandomLootContainerRequestData"; -import { IRedeemProfileRequestData } from "@spt-aki/models/eft/inventory/IRedeemProfileRequestData"; -import { ISetFavoriteItems } from "@spt-aki/models/eft/inventory/ISetFavoriteItems"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IAkiProfile } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { FenceService } from "@spt-aki/services/FenceService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { PlayerService } from "@spt-aki/services/PlayerService"; -import { RagfairOfferService } from "@spt-aki/services/RagfairOfferService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PaymentHelper } from "@spt/helpers/PaymentHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { QuestHelper } from "@spt/helpers/QuestHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IInventoryBindRequestData } from "@spt/models/eft/inventory/IInventoryBindRequestData"; +import { IInventoryCreateMarkerRequestData } from "@spt/models/eft/inventory/IInventoryCreateMarkerRequestData"; +import { IInventoryDeleteMarkerRequestData } from "@spt/models/eft/inventory/IInventoryDeleteMarkerRequestData"; +import { IInventoryEditMarkerRequestData } from "@spt/models/eft/inventory/IInventoryEditMarkerRequestData"; +import { IInventoryExamineRequestData } from "@spt/models/eft/inventory/IInventoryExamineRequestData"; +import { IInventoryFoldRequestData } from "@spt/models/eft/inventory/IInventoryFoldRequestData"; +import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData"; +import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData"; +import { IInventoryReadEncyclopediaRequestData } from "@spt/models/eft/inventory/IInventoryReadEncyclopediaRequestData"; +import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData"; +import { IInventorySortRequestData } from "@spt/models/eft/inventory/IInventorySortRequestData"; +import { IInventorySplitRequestData } from "@spt/models/eft/inventory/IInventorySplitRequestData"; +import { IInventorySwapRequestData } from "@spt/models/eft/inventory/IInventorySwapRequestData"; +import { IInventoryTagRequestData } from "@spt/models/eft/inventory/IInventoryTagRequestData"; +import { IInventoryToggleRequestData } from "@spt/models/eft/inventory/IInventoryToggleRequestData"; +import { IInventoryTransferRequestData } from "@spt/models/eft/inventory/IInventoryTransferRequestData"; +import { IOpenRandomLootContainerRequestData } from "@spt/models/eft/inventory/IOpenRandomLootContainerRequestData"; +import { IRedeemProfileRequestData } from "@spt/models/eft/inventory/IRedeemProfileRequestData"; +import { ISetFavoriteItems } from "@spt/models/eft/inventory/ISetFavoriteItems"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { FenceService } from "@spt/services/FenceService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { MapMarkerService } from "@spt/services/MapMarkerService"; +import { PlayerService } from "@spt/services/PlayerService"; +import { RagfairOfferService } from "@spt/services/RagfairOfferService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class InventoryController { protected logger: ILogger; protected hashUtil: HashUtil; protected itemHelper: ItemHelper; protected randomUtil: RandomUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected fenceService: FenceService; protected presetHelper: PresetHelper; protected inventoryHelper: InventoryHelper; protected questHelper: QuestHelper; protected hideoutHelper: HideoutHelper; protected ragfairOfferService: RagfairOfferService; + protected mapMarkerService: MapMarkerService; protected profileHelper: ProfileHelper; protected paymentHelper: PaymentHelper; + protected traderHelper: TraderHelper; protected localisationService: LocalisationService; protected playerService: PlayerService; protected lootGenerator: LootGenerator; protected eventOutputHolder: EventOutputHolder; protected httpResponseUtil: HttpResponseUtil; protected cloner: ICloner; - constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, randomUtil: RandomUtil, databaseServer: DatabaseServer, fenceService: FenceService, presetHelper: PresetHelper, inventoryHelper: InventoryHelper, questHelper: QuestHelper, hideoutHelper: HideoutHelper, ragfairOfferService: RagfairOfferService, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, playerService: PlayerService, lootGenerator: LootGenerator, eventOutputHolder: EventOutputHolder, httpResponseUtil: HttpResponseUtil, cloner: ICloner); + constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, randomUtil: RandomUtil, databaseService: DatabaseService, fenceService: FenceService, presetHelper: PresetHelper, inventoryHelper: InventoryHelper, questHelper: QuestHelper, hideoutHelper: HideoutHelper, ragfairOfferService: RagfairOfferService, mapMarkerService: MapMarkerService, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, traderHelper: TraderHelper, localisationService: LocalisationService, playerService: PlayerService, lootGenerator: LootGenerator, eventOutputHolder: EventOutputHolder, httpResponseUtil: HttpResponseUtil, cloner: ICloner); /** * Move Item * change location of item with parentId and slotId @@ -167,7 +171,12 @@ export declare class InventoryController { * @returns response */ examineItem(pmcData: IPmcData, body: IInventoryExamineRequestData, sessionID: string, output: IItemEventRouterResponse): IItemEventRouterResponse; - protected flagItemsAsInspectedAndRewardXp(itemTpls: string[], fullProfile: IAkiProfile): void; + /** + * Flag an item as seen in profiles encyclopedia + add inspect xp to profile + * @param itemTpls Inspected item tpls + * @param fullProfile Profile to add xp to + */ + protected flagItemsAsInspectedAndRewardXp(itemTpls: string[], fullProfile: ISptProfile): void; /** * Get the tplid of an item from the examine request object * @param request Response request @@ -208,12 +217,6 @@ export declare class InventoryController { * @param output Client response */ editMapMarker(pmcData: IPmcData, request: IInventoryEditMarkerRequestData, sessionID: string, output: IItemEventRouterResponse): void; - /** - * Strip out characters from note string that are not: letter/numbers/unicode/spaces - * @param mapNoteText Marker text to sanitise - * @returns Sanitised map marker text - */ - protected sanitiseMapMarkerText(mapNoteText: string): string; /** * Handle OpenRandomLootContainer event * Handle event fired when a container is unpacked (currently only the halloween pumpkin) diff --git a/TypeScript/24WebSocket/types/controllers/LauncherController.d.ts b/TypeScript/24WebSocket/types/controllers/LauncherController.d.ts index 5a5d4b7..789fc00 100644 --- a/TypeScript/24WebSocket/types/controllers/LauncherController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/LauncherController.d.ts @@ -1,21 +1,21 @@ -import { HttpServerHelper } from "@spt-aki/helpers/HttpServerHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { PreAkiModLoader } from "@spt-aki/loaders/PreAkiModLoader"; -import { IChangeRequestData } from "@spt-aki/models/eft/launcher/IChangeRequestData"; -import { ILoginRequestData } from "@spt-aki/models/eft/launcher/ILoginRequestData"; -import { IRegisterData } from "@spt-aki/models/eft/launcher/IRegisterData"; -import { Info, ModDetails } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { IConnectResponse } from "@spt-aki/models/eft/profile/IConnectResponse"; -import { ICoreConfig } from "@spt-aki/models/spt/config/ICoreConfig"; -import { IPackageJsonData } from "@spt-aki/models/spt/mod/IPackageJsonData"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; +import { IChangeRequestData } from "@spt/models/eft/launcher/IChangeRequestData"; +import { ILoginRequestData } from "@spt/models/eft/launcher/ILoginRequestData"; +import { IRegisterData } from "@spt/models/eft/launcher/IRegisterData"; +import { IConnectResponse } from "@spt/models/eft/profile/IConnectResponse"; +import { Info, ModDetails } from "@spt/models/eft/profile/ISptProfile"; +import { ICoreConfig } from "@spt/models/spt/config/ICoreConfig"; +import { IPackageJsonData } from "@spt/models/spt/mod/IPackageJsonData"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class LauncherController { protected logger: ILogger; protected hashUtil: HashUtil; @@ -24,19 +24,19 @@ export declare class LauncherController { protected saveServer: SaveServer; protected httpServerHelper: HttpServerHelper; protected profileHelper: ProfileHelper; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected localisationService: LocalisationService; - protected preAkiModLoader: PreAkiModLoader; + protected preSptModLoader: PreSptModLoader; protected configServer: ConfigServer; protected coreConfig: ICoreConfig; - constructor(logger: ILogger, hashUtil: HashUtil, timeUtil: TimeUtil, randomUtil: RandomUtil, saveServer: SaveServer, httpServerHelper: HttpServerHelper, profileHelper: ProfileHelper, databaseServer: DatabaseServer, localisationService: LocalisationService, preAkiModLoader: PreAkiModLoader, configServer: ConfigServer); + constructor(logger: ILogger, hashUtil: HashUtil, timeUtil: TimeUtil, randomUtil: RandomUtil, saveServer: SaveServer, httpServerHelper: HttpServerHelper, profileHelper: ProfileHelper, databaseService: DatabaseService, localisationService: LocalisationService, preSptModLoader: PreSptModLoader, configServer: ConfigServer); connect(): IConnectResponse; /** * Get descriptive text for each of the profile edtions a player can choose, keyed by profile.json profile type e.g. "Edge Of Darkness" * @returns Dictionary of profile types with related descriptive text */ protected getProfileDescriptions(): Record; - find(sessionIdKey: string): Info; + find(sessionId: string): Info; login(info: ILoginRequestData): string; register(info: IRegisterData): string; protected createAccount(info: IRegisterData): string; diff --git a/TypeScript/24WebSocket/types/controllers/LocationController.d.ts b/TypeScript/24WebSocket/types/controllers/LocationController.d.ts index 1b04b2e..727a8c8 100644 --- a/TypeScript/24WebSocket/types/controllers/LocationController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/LocationController.d.ts @@ -1,25 +1,25 @@ -import { ApplicationContext } from "@spt-aki/context/ApplicationContext"; -import { LocationGenerator } from "@spt-aki/generators/LocationGenerator"; -import { LootGenerator } from "@spt-aki/generators/LootGenerator"; -import { WeightedRandomHelper } from "@spt-aki/helpers/WeightedRandomHelper"; -import { ILocationBase } from "@spt-aki/models/eft/common/ILocationBase"; -import { ILocationsGenerateAllResponse } from "@spt-aki/models/eft/common/ILocationsSourceDestinationBase"; -import { IAirdropLootResult } from "@spt-aki/models/eft/location/IAirdropLootResult"; -import { IGetLocationRequestData } from "@spt-aki/models/eft/location/IGetLocationRequestData"; -import { AirdropTypeEnum } from "@spt-aki/models/enums/AirdropType"; -import { IAirdropConfig } from "@spt-aki/models/spt/config/IAirdropConfig"; -import { ILocationConfig } from "@spt-aki/models/spt/config/ILocationConfig"; -import { LootRequest } from "@spt-aki/models/spt/services/LootRequest"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { ItemFilterService } from "@spt-aki/services/ItemFilterService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { RaidTimeAdjustmentService } from "@spt-aki/services/RaidTimeAdjustmentService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationGenerator } from "@spt/generators/LocationGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { ILocationsGenerateAllResponse } from "@spt/models/eft/common/ILocationsSourceDestinationBase"; +import { IAirdropLootResult } from "@spt/models/eft/location/IAirdropLootResult"; +import { IGetLocationRequestData } from "@spt/models/eft/location/IGetLocationRequestData"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +import { IAirdropConfig } from "@spt/models/spt/config/IAirdropConfig"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { LootRequest } from "@spt/models/spt/services/LootRequest"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { ItemFilterService } from "@spt/services/ItemFilterService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class LocationController { protected hashUtil: HashUtil; protected randomUtil: RandomUtil; @@ -30,14 +30,14 @@ export declare class LocationController { protected raidTimeAdjustmentService: RaidTimeAdjustmentService; protected itemFilterService: ItemFilterService; protected lootGenerator: LootGenerator; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected timeUtil: TimeUtil; protected configServer: ConfigServer; protected applicationContext: ApplicationContext; protected cloner: ICloner; protected airdropConfig: IAirdropConfig; protected locationConfig: ILocationConfig; - constructor(hashUtil: HashUtil, randomUtil: RandomUtil, weightedRandomHelper: WeightedRandomHelper, logger: ILogger, locationGenerator: LocationGenerator, localisationService: LocalisationService, raidTimeAdjustmentService: RaidTimeAdjustmentService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseServer: DatabaseServer, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext, cloner: ICloner); + constructor(hashUtil: HashUtil, randomUtil: RandomUtil, weightedRandomHelper: WeightedRandomHelper, logger: ILogger, locationGenerator: LocationGenerator, localisationService: LocalisationService, raidTimeAdjustmentService: RaidTimeAdjustmentService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseService: DatabaseService, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext, cloner: ICloner); /** * Handle client/location/getLocalloot * Get a location (map) with generated loot data @@ -47,7 +47,7 @@ export declare class LocationController { */ get(sessionId: string, request: IGetLocationRequestData): ILocationBase; /** - * Generate a maps base location with loot + * Generate a maps base location and loot * @param name Map name * @returns ILocationBase */ diff --git a/TypeScript/24WebSocket/types/controllers/MatchController.d.ts b/TypeScript/24WebSocket/types/controllers/MatchController.d.ts index 20ed9f6..c08ebb0 100644 --- a/TypeScript/24WebSocket/types/controllers/MatchController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/MatchController.d.ts @@ -1,29 +1,29 @@ -import { ApplicationContext } from "@spt-aki/context/ApplicationContext"; -import { LootGenerator } from "@spt-aki/generators/LootGenerator"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IEndOfflineRaidRequestData } from "@spt-aki/models/eft/match/IEndOfflineRaidRequestData"; -import { IGetRaidConfigurationRequestData } from "@spt-aki/models/eft/match/IGetRaidConfigurationRequestData"; -import { IMatchGroupStartGameRequest } from "@spt-aki/models/eft/match/IMatchGroupStartGameRequest"; -import { IMatchGroupStatusRequest } from "@spt-aki/models/eft/match/IMatchGroupStatusRequest"; -import { IMatchGroupStatusResponse } from "@spt-aki/models/eft/match/IMatchGroupStatusResponse"; -import { IProfileStatusResponse } from "@spt-aki/models/eft/match/IProfileStatusResponse"; -import { IInRaidConfig } from "@spt-aki/models/spt/config/IInRaidConfig"; -import { IMatchConfig } from "@spt-aki/models/spt/config/IMatchConfig"; -import { IPmcConfig } from "@spt-aki/models/spt/config/IPmcConfig"; -import { ITraderConfig } from "@spt-aki/models/spt/config/ITraderConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { BotGenerationCacheService } from "@spt-aki/services/BotGenerationCacheService"; -import { BotLootCacheService } from "@spt-aki/services/BotLootCacheService"; -import { MailSendService } from "@spt-aki/services/MailSendService"; -import { MatchLocationService } from "@spt-aki/services/MatchLocationService"; -import { ProfileSnapshotService } from "@spt-aki/services/ProfileSnapshotService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IEndOfflineRaidRequestData } from "@spt/models/eft/match/IEndOfflineRaidRequestData"; +import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; +import { IMatchGroupStartGameRequest } from "@spt/models/eft/match/IMatchGroupStartGameRequest"; +import { IMatchGroupStatusRequest } from "@spt/models/eft/match/IMatchGroupStatusRequest"; +import { IMatchGroupStatusResponse } from "@spt/models/eft/match/IMatchGroupStatusResponse"; +import { IProfileStatusResponse } from "@spt/models/eft/match/IProfileStatusResponse"; +import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; +import { IMatchConfig } from "@spt/models/spt/config/IMatchConfig"; +import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +import { ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { MailSendService } from "@spt/services/MailSendService"; +import { MatchLocationService } from "@spt/services/MatchLocationService"; +import { ProfileSnapshotService } from "@spt/services/ProfileSnapshotService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class MatchController { protected logger: ILogger; protected saveServer: SaveServer; diff --git a/TypeScript/24WebSocket/types/controllers/NoteController.d.ts b/TypeScript/24WebSocket/types/controllers/NoteController.d.ts index ef07d6d..a46a0aa 100644 --- a/TypeScript/24WebSocket/types/controllers/NoteController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/NoteController.d.ts @@ -1,7 +1,7 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { INoteActionData } from "@spt-aki/models/eft/notes/INoteActionData"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { INoteActionData } from "@spt/models/eft/notes/INoteActionData"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; export declare class NoteController { protected eventOutputHolder: EventOutputHolder; constructor(eventOutputHolder: EventOutputHolder); diff --git a/TypeScript/24WebSocket/types/controllers/NotifierController.d.ts b/TypeScript/24WebSocket/types/controllers/NotifierController.d.ts index ad3d025..8939bee 100644 --- a/TypeScript/24WebSocket/types/controllers/NotifierController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/NotifierController.d.ts @@ -1,7 +1,7 @@ -import { HttpServerHelper } from "@spt-aki/helpers/HttpServerHelper"; -import { NotifierHelper } from "@spt-aki/helpers/NotifierHelper"; -import { INotifierChannel } from "@spt-aki/models/eft/notifier/INotifier"; -import { NotificationService } from "@spt-aki/services/NotificationService"; +import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { NotifierHelper } from "@spt/helpers/NotifierHelper"; +import { INotifierChannel } from "@spt/models/eft/notifier/INotifier"; +import { NotificationService } from "@spt/services/NotificationService"; export declare class NotifierController { protected notifierHelper: NotifierHelper; protected httpServerHelper: HttpServerHelper; diff --git a/TypeScript/24WebSocket/types/controllers/PresetController.d.ts b/TypeScript/24WebSocket/types/controllers/PresetController.d.ts index 2e40723..0317a89 100644 --- a/TypeScript/24WebSocket/types/controllers/PresetController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/PresetController.d.ts @@ -1,10 +1,10 @@ -import { PresetHelper } from "@spt-aki/helpers/PresetHelper"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseService } from "@spt/services/DatabaseService"; export declare class PresetController { protected logger: ILogger; protected presetHelper: PresetHelper; - protected databaseServer: DatabaseServer; - constructor(logger: ILogger, presetHelper: PresetHelper, databaseServer: DatabaseServer); + protected databaseService: DatabaseService; + constructor(logger: ILogger, presetHelper: PresetHelper, databaseService: DatabaseService); initialize(): void; } diff --git a/TypeScript/24WebSocket/types/controllers/ProfileController.d.ts b/TypeScript/24WebSocket/types/controllers/ProfileController.d.ts index 41d8658..e8dae73 100644 --- a/TypeScript/24WebSocket/types/controllers/ProfileController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/ProfileController.d.ts @@ -1,38 +1,41 @@ -import { PlayerScavGenerator } from "@spt-aki/generators/PlayerScavGenerator"; -import { DialogueHelper } from "@spt-aki/helpers/DialogueHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { QuestHelper } from "@spt-aki/helpers/QuestHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IMiniProfile } from "@spt-aki/models/eft/launcher/IMiniProfile"; -import { GetProfileStatusResponseData } from "@spt-aki/models/eft/profile/GetProfileStatusResponseData"; -import { IAkiProfile } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { IGetOtherProfileRequest } from "@spt-aki/models/eft/profile/IGetOtherProfileRequest"; -import { IGetOtherProfileResponse } from "@spt-aki/models/eft/profile/IGetOtherProfileResponse"; -import { IProfileChangeNicknameRequestData } from "@spt-aki/models/eft/profile/IProfileChangeNicknameRequestData"; -import { IProfileChangeVoiceRequestData } from "@spt-aki/models/eft/profile/IProfileChangeVoiceRequestData"; -import { IProfileCreateRequestData } from "@spt-aki/models/eft/profile/IProfileCreateRequestData"; -import { ISearchFriendRequestData } from "@spt-aki/models/eft/profile/ISearchFriendRequestData"; -import { ISearchFriendResponse } from "@spt-aki/models/eft/profile/ISearchFriendResponse"; -import { IValidateNicknameRequestData } from "@spt-aki/models/eft/profile/IValidateNicknameRequestData"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { MailSendService } from "@spt-aki/services/MailSendService"; -import { ProfileFixerService } from "@spt-aki/services/ProfileFixerService"; -import { SeasonalEventService } from "@spt-aki/services/SeasonalEventService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { DialogueHelper } from "@spt/helpers/DialogueHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { QuestHelper } from "@spt/helpers/QuestHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IMiniProfile } from "@spt/models/eft/launcher/IMiniProfile"; +import { GetProfileStatusResponseData } from "@spt/models/eft/profile/GetProfileStatusResponseData"; +import { IGetOtherProfileRequest } from "@spt/models/eft/profile/IGetOtherProfileRequest"; +import { IGetOtherProfileResponse } from "@spt/models/eft/profile/IGetOtherProfileResponse"; +import { IGetProfileSettingsRequest } from "@spt/models/eft/profile/IGetProfileSettingsRequest"; +import { IProfileChangeNicknameRequestData } from "@spt/models/eft/profile/IProfileChangeNicknameRequestData"; +import { IProfileChangeVoiceRequestData } from "@spt/models/eft/profile/IProfileChangeVoiceRequestData"; +import { IProfileCreateRequestData } from "@spt/models/eft/profile/IProfileCreateRequestData"; +import { ISearchFriendRequestData } from "@spt/models/eft/profile/ISearchFriendRequestData"; +import { ISearchFriendResponse } from "@spt/models/eft/profile/ISearchFriendResponse"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; +import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { MailSendService } from "@spt/services/MailSendService"; +import { ProfileFixerService } from "@spt/services/ProfileFixerService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class ProfileController { protected logger: ILogger; protected hashUtil: HashUtil; + protected cloner: ICloner; protected timeUtil: TimeUtil; protected saveServer: SaveServer; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected itemHelper: ItemHelper; protected profileFixerService: ProfileFixerService; protected localisationService: LocalisationService; @@ -44,7 +47,7 @@ export declare class ProfileController { protected dialogueHelper: DialogueHelper; protected questHelper: QuestHelper; protected profileHelper: ProfileHelper; - constructor(logger: ILogger, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, databaseServer: DatabaseServer, itemHelper: ItemHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, seasonalEventService: SeasonalEventService, mailSendService: MailSendService, playerScavGenerator: PlayerScavGenerator, eventOutputHolder: EventOutputHolder, traderHelper: TraderHelper, dialogueHelper: DialogueHelper, questHelper: QuestHelper, profileHelper: ProfileHelper); + constructor(logger: ILogger, hashUtil: HashUtil, cloner: ICloner, timeUtil: TimeUtil, saveServer: SaveServer, databaseService: DatabaseService, itemHelper: ItemHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, seasonalEventService: SeasonalEventService, mailSendService: MailSendService, playerScavGenerator: PlayerScavGenerator, eventOutputHolder: EventOutputHolder, traderHelper: TraderHelper, dialogueHelper: DialogueHelper, questHelper: QuestHelper, profileHelper: ProfileHelper); /** * Handle /launcher/profiles */ @@ -52,7 +55,7 @@ export declare class ProfileController { /** * Handle launcher/profile/info */ - getMiniProfile(sessionID: string): any; + getMiniProfile(sessionID: string): IMiniProfile; /** * Handle client/game/profile/list */ @@ -81,12 +84,12 @@ export declare class ProfileController { * @param sessionID Session id * @param response Event router response */ - protected givePlayerStartingQuestRewards(profileDetails: IAkiProfile, sessionID: string, response: IItemEventRouterResponse): void; + protected givePlayerStartingQuestRewards(profileDetails: ISptProfile, sessionID: string, response: IItemEventRouterResponse): void; /** * For each trader reset their state to what a level 1 player would see - * @param sessionID Session id of profile to reset + * @param sessionId Session id of profile to reset */ - protected resetAllTradersInProfile(sessionID: string): void; + protected resetAllTradersInProfile(sessionId: string): void; /** * Generate a player scav object * PMC profile MUST exist first before pscav can be generated @@ -116,4 +119,8 @@ export declare class ProfileController { */ getProfileStatus(sessionId: string): GetProfileStatusResponseData; getOtherProfile(sessionId: string, request: IGetOtherProfileRequest): IGetOtherProfileResponse; + /** + * Handle client/profile/settings + */ + setChosenProfileIcon(sessionId: string, request: IGetProfileSettingsRequest): boolean; } diff --git a/TypeScript/24WebSocket/types/controllers/QuestController.d.ts b/TypeScript/24WebSocket/types/controllers/QuestController.d.ts index 1d13a10..3cdce00 100644 --- a/TypeScript/24WebSocket/types/controllers/QuestController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/QuestController.d.ts @@ -1,38 +1,37 @@ -import { DialogueHelper } from "@spt-aki/helpers/DialogueHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { QuestConditionHelper } from "@spt-aki/helpers/QuestConditionHelper"; -import { QuestHelper } from "@spt-aki/helpers/QuestHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IQuestStatus } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { IQuest, IQuestCondition } from "@spt-aki/models/eft/common/tables/IQuest"; -import { IRepeatableQuest } from "@spt-aki/models/eft/common/tables/IRepeatableQuests"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IAcceptQuestRequestData } from "@spt-aki/models/eft/quests/IAcceptQuestRequestData"; -import { ICompleteQuestRequestData } from "@spt-aki/models/eft/quests/ICompleteQuestRequestData"; -import { IFailQuestRequestData } from "@spt-aki/models/eft/quests/IFailQuestRequestData"; -import { IHandoverQuestRequestData } from "@spt-aki/models/eft/quests/IHandoverQuestRequestData"; -import { IQuestConfig } from "@spt-aki/models/spt/config/IQuestConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocaleService } from "@spt-aki/services/LocaleService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { MailSendService } from "@spt-aki/services/MailSendService"; -import { PlayerService } from "@spt-aki/services/PlayerService"; -import { SeasonalEventService } from "@spt-aki/services/SeasonalEventService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { DialogueHelper } from "@spt/helpers/DialogueHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { QuestConditionHelper } from "@spt/helpers/QuestConditionHelper"; +import { QuestHelper } from "@spt/helpers/QuestHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IQuestStatus } from "@spt/models/eft/common/tables/IBotBase"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IQuest, IQuestCondition } from "@spt/models/eft/common/tables/IQuest"; +import { IRepeatableQuest } from "@spt/models/eft/common/tables/IRepeatableQuests"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IAcceptQuestRequestData } from "@spt/models/eft/quests/IAcceptQuestRequestData"; +import { ICompleteQuestRequestData } from "@spt/models/eft/quests/ICompleteQuestRequestData"; +import { IFailQuestRequestData } from "@spt/models/eft/quests/IFailQuestRequestData"; +import { IHandoverQuestRequestData } from "@spt/models/eft/quests/IHandoverQuestRequestData"; +import { IQuestConfig } from "@spt/models/spt/config/IQuestConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocaleService } from "@spt/services/LocaleService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { MailSendService } from "@spt/services/MailSendService"; +import { PlayerService } from "@spt/services/PlayerService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class QuestController { protected logger: ILogger; protected timeUtil: TimeUtil; protected httpResponseUtil: HttpResponseUtil; protected eventOutputHolder: EventOutputHolder; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected itemHelper: ItemHelper; protected dialogueHelper: DialogueHelper; protected mailSendService: MailSendService; @@ -42,12 +41,11 @@ export declare class QuestController { protected questConditionHelper: QuestConditionHelper; protected playerService: PlayerService; protected localeService: LocaleService; - protected seasonalEventService: SeasonalEventService; protected localisationService: LocalisationService; protected configServer: ConfigServer; protected cloner: ICloner; protected questConfig: IQuestConfig; - constructor(logger: ILogger, timeUtil: TimeUtil, httpResponseUtil: HttpResponseUtil, eventOutputHolder: EventOutputHolder, databaseServer: DatabaseServer, itemHelper: ItemHelper, dialogueHelper: DialogueHelper, mailSendService: MailSendService, profileHelper: ProfileHelper, traderHelper: TraderHelper, questHelper: QuestHelper, questConditionHelper: QuestConditionHelper, playerService: PlayerService, localeService: LocaleService, seasonalEventService: SeasonalEventService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + constructor(logger: ILogger, timeUtil: TimeUtil, httpResponseUtil: HttpResponseUtil, eventOutputHolder: EventOutputHolder, databaseService: DatabaseService, itemHelper: ItemHelper, dialogueHelper: DialogueHelper, mailSendService: MailSendService, profileHelper: ProfileHelper, traderHelper: TraderHelper, questHelper: QuestHelper, questConditionHelper: QuestConditionHelper, playerService: PlayerService, localeService: LocaleService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); /** * Handle client/quest/list * Get all quests visible to player @@ -63,12 +61,6 @@ export declare class QuestController { * @returns true if quest can be seen/accepted by player of defined level */ protected playerLevelFulfillsQuestRequirement(quest: IQuest, playerLevel: number): boolean; - /** - * Should a quest be shown to the player in trader quest screen - * @param questId Quest to check - * @returns true = show to player - */ - protected showEventQuestToPlayer(questId: string): boolean; /** * Handle QuestAccept event * Handle the client accepting a quest and starting it @@ -90,6 +82,7 @@ export declare class QuestController { * @returns IItemEventRouterResponse */ acceptRepeatableQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; + protected createAcceptedQuestClientResponse(sessionID: string, pmcData: IPmcData, repeatableQuestProfile: IRepeatableQuest): IItemEventRouterResponse; /** * Look for an accepted quest inside player profile, return matching * @param pmcData Profile to search through @@ -126,7 +119,7 @@ export declare class QuestController { * @param postQuestStatuses Quests after * @returns QuestStatusChange array */ - protected getQuestsWithDifferentStatuses(preQuestStatusus: IQuestStatus[], postQuestStatuses: IQuestStatus[]): IQuestStatus[]; + protected getQuestsWithDifferentStatuses(preQuestStatusus: IQuestStatus[], postQuestStatuses: IQuestStatus[]): IQuestStatus[] | undefined; /** * Send a popup to player on successful completion of a quest * @param sessionID session id diff --git a/TypeScript/24WebSocket/types/controllers/RagfairController.d.ts b/TypeScript/24WebSocket/types/controllers/RagfairController.d.ts index 0c01b7d..fbd25e0 100644 --- a/TypeScript/24WebSocket/types/controllers/RagfairController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/RagfairController.d.ts @@ -1,44 +1,45 @@ -import { RagfairOfferGenerator } from "@spt-aki/generators/RagfairOfferGenerator"; -import { HandbookHelper } from "@spt-aki/helpers/HandbookHelper"; -import { InventoryHelper } from "@spt-aki/helpers/InventoryHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { RagfairHelper } from "@spt-aki/helpers/RagfairHelper"; -import { RagfairOfferHelper } from "@spt-aki/helpers/RagfairOfferHelper"; -import { RagfairSellHelper } from "@spt-aki/helpers/RagfairSellHelper"; -import { RagfairSortHelper } from "@spt-aki/helpers/RagfairSortHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITraderAssort } from "@spt-aki/models/eft/common/tables/ITrader"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IAkiProfile } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { IAddOfferRequestData, Requirement } from "@spt-aki/models/eft/ragfair/IAddOfferRequestData"; -import { IExtendOfferRequestData } from "@spt-aki/models/eft/ragfair/IExtendOfferRequestData"; -import { IGetItemPriceResult } from "@spt-aki/models/eft/ragfair/IGetItemPriceResult"; -import { IGetMarketPriceRequestData } from "@spt-aki/models/eft/ragfair/IGetMarketPriceRequestData"; -import { IGetOffersResult } from "@spt-aki/models/eft/ragfair/IGetOffersResult"; -import { IGetRagfairOfferByIdRequest } from "@spt-aki/models/eft/ragfair/IGetRagfairOfferByIdRequest"; -import { IRagfairOffer } from "@spt-aki/models/eft/ragfair/IRagfairOffer"; -import { IRemoveOfferRequestData } from "@spt-aki/models/eft/ragfair/IRemoveOfferRequestData"; -import { ISearchRequestData } from "@spt-aki/models/eft/ragfair/ISearchRequestData"; -import { IProcessBuyTradeRequestData } from "@spt-aki/models/eft/trade/IProcessBuyTradeRequestData"; -import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { RagfairServer } from "@spt-aki/servers/RagfairServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { PaymentService } from "@spt-aki/services/PaymentService"; -import { RagfairOfferService } from "@spt-aki/services/RagfairOfferService"; -import { RagfairPriceService } from "@spt-aki/services/RagfairPriceService"; -import { RagfairRequiredItemsService } from "@spt-aki/services/RagfairRequiredItemsService"; -import { RagfairTaxService } from "@spt-aki/services/RagfairTaxService"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { RagfairOfferGenerator } from "@spt/generators/RagfairOfferGenerator"; +import { HandbookHelper } from "@spt/helpers/HandbookHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PaymentHelper } from "@spt/helpers/PaymentHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { RagfairHelper } from "@spt/helpers/RagfairHelper"; +import { RagfairOfferHelper } from "@spt/helpers/RagfairOfferHelper"; +import { RagfairSellHelper } from "@spt/helpers/RagfairSellHelper"; +import { RagfairSortHelper } from "@spt/helpers/RagfairSortHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITraderAssort } from "@spt/models/eft/common/tables/ITrader"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; +import { IAddOfferRequestData, Requirement } from "@spt/models/eft/ragfair/IAddOfferRequestData"; +import { IExtendOfferRequestData } from "@spt/models/eft/ragfair/IExtendOfferRequestData"; +import { IGetItemPriceResult } from "@spt/models/eft/ragfair/IGetItemPriceResult"; +import { IGetMarketPriceRequestData } from "@spt/models/eft/ragfair/IGetMarketPriceRequestData"; +import { IGetOffersResult } from "@spt/models/eft/ragfair/IGetOffersResult"; +import { IGetRagfairOfferByIdRequest } from "@spt/models/eft/ragfair/IGetRagfairOfferByIdRequest"; +import { IRagfairOffer } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { IRemoveOfferRequestData } from "@spt/models/eft/ragfair/IRemoveOfferRequestData"; +import { ISearchRequestData } from "@spt/models/eft/ragfair/ISearchRequestData"; +import { IProcessBuyTradeRequestData } from "@spt/models/eft/trade/IProcessBuyTradeRequestData"; +import { FleaOfferType } from "@spt/models/enums/FleaOfferType"; +import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { RagfairServer } from "@spt/servers/RagfairServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { PaymentService } from "@spt/services/PaymentService"; +import { RagfairOfferService } from "@spt/services/RagfairOfferService"; +import { RagfairPriceService } from "@spt/services/RagfairPriceService"; +import { RagfairRequiredItemsService } from "@spt/services/RagfairRequiredItemsService"; +import { RagfairTaxService } from "@spt/services/RagfairTaxService"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; /** * Handle RagfairCallback events */ @@ -49,7 +50,7 @@ export declare class RagfairController { protected eventOutputHolder: EventOutputHolder; protected ragfairServer: RagfairServer; protected ragfairPriceService: RagfairPriceService; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected itemHelper: ItemHelper; protected saveServer: SaveServer; protected ragfairSellHelper: RagfairSellHelper; @@ -69,7 +70,7 @@ export declare class RagfairController { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected ragfairConfig: IRagfairConfig; - constructor(logger: ILogger, timeUtil: TimeUtil, httpResponse: HttpResponseUtil, eventOutputHolder: EventOutputHolder, ragfairServer: RagfairServer, ragfairPriceService: RagfairPriceService, databaseServer: DatabaseServer, itemHelper: ItemHelper, saveServer: SaveServer, ragfairSellHelper: RagfairSellHelper, ragfairTaxService: RagfairTaxService, ragfairSortHelper: RagfairSortHelper, ragfairOfferHelper: RagfairOfferHelper, profileHelper: ProfileHelper, paymentService: PaymentService, handbookHelper: HandbookHelper, paymentHelper: PaymentHelper, inventoryHelper: InventoryHelper, traderHelper: TraderHelper, ragfairHelper: RagfairHelper, ragfairOfferService: RagfairOfferService, ragfairRequiredItemsService: RagfairRequiredItemsService, ragfairOfferGenerator: RagfairOfferGenerator, localisationService: LocalisationService, configServer: ConfigServer); + constructor(logger: ILogger, timeUtil: TimeUtil, httpResponse: HttpResponseUtil, eventOutputHolder: EventOutputHolder, ragfairServer: RagfairServer, ragfairPriceService: RagfairPriceService, databaseService: DatabaseService, itemHelper: ItemHelper, saveServer: SaveServer, ragfairSellHelper: RagfairSellHelper, ragfairTaxService: RagfairTaxService, ragfairSortHelper: RagfairSortHelper, ragfairOfferHelper: RagfairOfferHelper, profileHelper: ProfileHelper, paymentService: PaymentService, handbookHelper: HandbookHelper, paymentHelper: PaymentHelper, inventoryHelper: InventoryHelper, traderHelper: TraderHelper, ragfairHelper: RagfairHelper, ragfairOfferService: RagfairOfferService, ragfairRequiredItemsService: RagfairRequiredItemsService, ragfairOfferGenerator: RagfairOfferGenerator, localisationService: LocalisationService, configServer: ConfigServer); /** * Handles client/ragfair/find * Returns flea offers that match required search parameters @@ -112,7 +113,7 @@ export declare class RagfairController { * @param offer Flea offer to update * @param fullProfile Players full profile */ - protected setTraderOfferPurchaseLimits(offer: IRagfairOffer, fullProfile: IAkiProfile): void; + protected setTraderOfferPurchaseLimits(offer: IRagfairOffer, fullProfile: ISptProfile): void; /** * Adjust ragfair offer stack count to match same value as traders assort stack count * @param offer Flea offer to adjust stack size of @@ -148,13 +149,52 @@ export declare class RagfairController { * @returns IItemEventRouterResponse */ addPlayerOffer(pmcData: IPmcData, offerRequest: IAddOfferRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Create a flea offer for a single item - uncludes an item with > 1 sized stack + * e.g. 1 ammo stack of 30 cartridges + * @param sessionID Session id + * @param offerRequest Offer request from client + * @param fullProfile Full profile of player + * @param output Response to send to client + * @returns IItemEventRouterResponse + */ + protected createSingleOffer(sessionID: string, offerRequest: IAddOfferRequestData, fullProfile: ISptProfile, output: IItemEventRouterResponse): IItemEventRouterResponse; + /** + * 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 purchsed individually + * @param sessionID Session id + * @param offerRequest Offer request from client + * @param fullProfile Full profile of player + * @param output Response to send to client + * @returns IItemEventRouterResponse + */ + protected createMultiOffer(sessionID: string, offerRequest: IAddOfferRequestData, fullProfile: ISptProfile, output: IItemEventRouterResponse): IItemEventRouterResponse; + /** + * 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 + * @param sessionID Session id + * @param offerRequest Offer request from client + * @param fullProfile Full profile of player + * @param output Response to send to client + * @returns IItemEventRouterResponse + */ + protected createPackOffer(sessionID: string, offerRequest: IAddOfferRequestData, fullProfile: ISptProfile, output: IItemEventRouterResponse): IItemEventRouterResponse; + /** + * Given a client request, determine what type of offer is being created + * single/multi/pack + * @param offerRequest Client request + * @returns FleaOfferType + */ + protected getOfferType(offerRequest: IAddOfferRequestData): FleaOfferType; /** * Charge player a listing fee for using flea, pulls charge from data previously sent by client * @param sessionID Player id * @param rootItem Base item being listed (used when client tax cost not found and must be done on server) * @param pmcData Player profile * @param requirementsPriceInRub Rouble cost player chose for listing (used when client tax cost not found and must be done on server) - * @param itemStackCount How many items were listed in player (used when client tax cost not found and must be done on server) + * @param itemStackCount How many items were listed by player (used when client tax cost not found and must be done on server) * @param offerRequest Add offer request object from client * @param output IItemEventRouterResponse * @returns True if charging tax to player failed @@ -180,8 +220,8 @@ export declare class RagfairController { * @returns Array of items from player inventory */ protected getItemsToListOnFleaFromInventory(pmcData: IPmcData, itemIdsFromFleaOfferRequest: string[]): { - items: Item[] | null; - errorMessage: string | null; + items: Item[][] | undefined; + errorMessage: string | undefined; }; createPlayerOffer(sessionId: string, requirements: Requirement[], items: Item[], sellInOnePiece: boolean): IRagfairOffer; getAllFleaPrices(): Record; diff --git a/TypeScript/24WebSocket/types/controllers/RepairController.d.ts b/TypeScript/24WebSocket/types/controllers/RepairController.d.ts index 7ec47ff..cb44bd0 100644 --- a/TypeScript/24WebSocket/types/controllers/RepairController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/RepairController.d.ts @@ -1,21 +1,21 @@ -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { QuestHelper } from "@spt-aki/helpers/QuestHelper"; -import { RepairHelper } from "@spt-aki/helpers/RepairHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IRepairActionDataRequest } from "@spt-aki/models/eft/repair/IRepairActionDataRequest"; -import { ITraderRepairActionDataRequest } from "@spt-aki/models/eft/repair/ITraderRepairActionDataRequest"; -import { IRepairConfig } from "@spt-aki/models/spt/config/IRepairConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { PaymentService } from "@spt-aki/services/PaymentService"; -import { RepairService } from "@spt-aki/services/RepairService"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { QuestHelper } from "@spt/helpers/QuestHelper"; +import { RepairHelper } from "@spt/helpers/RepairHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IRepairActionDataRequest } from "@spt/models/eft/repair/IRepairActionDataRequest"; +import { ITraderRepairActionDataRequest } from "@spt/models/eft/repair/ITraderRepairActionDataRequest"; +import { IRepairConfig } from "@spt/models/spt/config/IRepairConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { PaymentService } from "@spt/services/PaymentService"; +import { RepairService } from "@spt/services/RepairService"; export declare class RepairController { protected logger: ILogger; protected eventOutputHolder: EventOutputHolder; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected questHelper: QuestHelper; protected traderHelper: TraderHelper; protected paymentService: PaymentService; @@ -23,7 +23,7 @@ export declare class RepairController { protected repairService: RepairService; protected profileHelper: ProfileHelper; protected repairConfig: IRepairConfig; - constructor(logger: ILogger, eventOutputHolder: EventOutputHolder, databaseServer: DatabaseServer, questHelper: QuestHelper, traderHelper: TraderHelper, paymentService: PaymentService, repairHelper: RepairHelper, repairService: RepairService, profileHelper: ProfileHelper); + constructor(logger: ILogger, eventOutputHolder: EventOutputHolder, databaseService: DatabaseService, questHelper: QuestHelper, traderHelper: TraderHelper, paymentService: PaymentService, repairHelper: RepairHelper, repairService: RepairService, profileHelper: ProfileHelper); /** * Handle TraderRepair event * Repair with trader diff --git a/TypeScript/24WebSocket/types/controllers/RepeatableQuestController.d.ts b/TypeScript/24WebSocket/types/controllers/RepeatableQuestController.d.ts index ed5343a..74f39eb 100644 --- a/TypeScript/24WebSocket/types/controllers/RepeatableQuestController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/RepeatableQuestController.d.ts @@ -1,34 +1,37 @@ -import { RepeatableQuestGenerator } from "@spt-aki/generators/RepeatableQuestGenerator"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { QuestHelper } from "@spt-aki/helpers/QuestHelper"; -import { RepeatableQuestHelper } from "@spt-aki/helpers/RepeatableQuestHelper"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IPmcDataRepeatableQuest, IRepeatableQuest } from "@spt-aki/models/eft/common/tables/IRepeatableQuests"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IRepeatableQuestChangeRequest } from "@spt-aki/models/eft/quests/IRepeatableQuestChangeRequest"; -import { ELocationName } from "@spt-aki/models/enums/ELocationName"; -import { IQuestConfig, IRepeatableQuestConfig } from "@spt-aki/models/spt/config/IQuestConfig"; -import { IQuestTypePool } from "@spt-aki/models/spt/repeatable/IQuestTypePool"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { PaymentService } from "@spt-aki/services/PaymentService"; -import { ProfileFixerService } from "@spt-aki/services/ProfileFixerService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -import { ObjectId } from "@spt-aki/utils/ObjectId"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { RepeatableQuestGenerator } from "@spt/generators/RepeatableQuestGenerator"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { QuestHelper } from "@spt/helpers/QuestHelper"; +import { RepeatableQuestHelper } from "@spt/helpers/RepeatableQuestHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IPmcDataRepeatableQuest, IRepeatableQuest } from "@spt/models/eft/common/tables/IRepeatableQuests"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; +import { IRepeatableQuestChangeRequest } from "@spt/models/eft/quests/IRepeatableQuestChangeRequest"; +import { ELocationName } from "@spt/models/enums/ELocationName"; +import { IQuestConfig, IRepeatableQuestConfig } from "@spt/models/spt/config/IQuestConfig"; +import { IGetRepeatableByIdResult } from "@spt/models/spt/quests/IGetRepeatableByIdResult"; +import { IQuestTypePool } from "@spt/models/spt/repeatable/IQuestTypePool"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { PaymentService } from "@spt/services/PaymentService"; +import { ProfileFixerService } from "@spt/services/ProfileFixerService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; +import { ObjectId } from "@spt/utils/ObjectId"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class RepeatableQuestController { protected logger: ILogger; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected timeUtil: TimeUtil; protected randomUtil: RandomUtil; protected httpResponse: HttpResponseUtil; protected profileHelper: ProfileHelper; protected profileFixerService: ProfileFixerService; + protected localisationService: LocalisationService; protected eventOutputHolder: EventOutputHolder; protected paymentService: PaymentService; protected objectId: ObjectId; @@ -38,7 +41,7 @@ export declare class RepeatableQuestController { protected configServer: ConfigServer; protected cloner: ICloner; protected questConfig: IQuestConfig; - constructor(logger: ILogger, databaseServer: DatabaseServer, timeUtil: TimeUtil, randomUtil: RandomUtil, httpResponse: HttpResponseUtil, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, eventOutputHolder: EventOutputHolder, paymentService: PaymentService, objectId: ObjectId, repeatableQuestGenerator: RepeatableQuestGenerator, repeatableQuestHelper: RepeatableQuestHelper, questHelper: QuestHelper, configServer: ConfigServer, cloner: ICloner); + constructor(logger: ILogger, databaseService: DatabaseService, timeUtil: TimeUtil, randomUtil: RandomUtil, httpResponse: HttpResponseUtil, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, eventOutputHolder: EventOutputHolder, paymentService: PaymentService, objectId: ObjectId, repeatableQuestGenerator: RepeatableQuestGenerator, repeatableQuestHelper: RepeatableQuestHelper, questHelper: QuestHelper, configServer: ConfigServer, cloner: ICloner); /** * Handle client/repeatalbeQuests/activityPeriods * Returns an array of objects in the format of repeatable quests to the client. @@ -60,12 +63,37 @@ export declare class RepeatableQuestController { * (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 * - * @param {string} _info Request from client * @param {string} sessionID Player's session id * * @returns {array} Array of "repeatableQuestObjects" as described above */ - getClientRepeatableQuests(_info: IEmptyRequestData, sessionID: string): IPmcDataRepeatableQuest[]; + getClientRepeatableQuests(sessionID: string): IPmcDataRepeatableQuest[]; + /** + * Expire quests and replace expired quests with ready-to-hand-in quests inside generatedRepeatables.activeQuests + * @param generatedRepeatables Repeatables to process (daily/weekly) + * @param pmcData Player profile + */ + protected processExpiredQuests(generatedRepeatables: IPmcDataRepeatableQuest, pmcData: IPmcData): void; + /** + * Check if a repeatable quest type (daily/weekly) is active for the given profile + * @param repeatableConfig Repeatable quest config + * @param pmcData Player profile + * @returns True if profile is allowed to access dailies + */ + protected canProfileAccessRepeatableQuests(repeatableConfig: IRepeatableQuestConfig, pmcData: IPmcData): boolean; + /** + * Does player have daily scav quests unlocked + * @param pmcData Player profile to check + * @returns True if unlocked + */ + protected playerHasDailyScavQuestsUnlocked(pmcData: IPmcData): boolean; + /** + * Does player have daily pmc quests unlocked + * @param pmcData Player profile to check + * @param repeatableConfig Config of daily type to check + * @returns True if unlocked + */ + protected playerHasDailyPmcQuestsUnlocked(pmcData: IPmcData, repeatableConfig: IRepeatableQuestConfig): boolean; /** * Get the number of quests to generate - takes into account charisma state of player * @param repeatableConfig Config @@ -97,10 +125,10 @@ export declare class RepeatableQuestController { /** * Return the locations this PMC is allowed to get daily quests for based on their level * @param locations The original list of locations - * @param pmcLevel The level of the player PMC + * @param pmcLevel The players level * @returns A filtered list of locations that allow the player PMC level to access it */ - protected getAllowedLocations(locations: Record, pmcLevel: number): Partial>; + protected getAllowedLocationsForPmcLevel(locations: Record, pmcLevel: number): Partial>; /** * Return true if the given pmcLevel is allowed on the given location * @param location The location name to check @@ -111,7 +139,29 @@ export declare class RepeatableQuestController { debugLogRepeatableQuestIds(pmcData: IPmcData): void; /** * Handle RepeatableQuestChange event + * + * Replace a players repeatable quest + * @param pmcData Player profile + * @param changeRequest Request object + * @param sessionID Session id + * @returns IItemEventRouterResponse */ changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse; + /** + * Find a repeatable (daily/weekly/scav) from a players profile by its id + * @param questId Id of quest to find + * @param pmcData Profile that contains quests to look through + * @returns IGetRepeatableByIdResult + */ + protected getRepeatableById(questId: string, pmcData: IPmcData): IGetRepeatableByIdResult; protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; + /** + * Some accounts have access to free repeatable quest refreshes + * Track the usage of them inside players profile + * @param fullProfile Player profile + * @param repeatableSubType Can be daily / weekly / scav repeatable + * @param repeatableTypeName Subtype of repeatable quest: daily / weekly / scav + * @returns Is the repeatable being replaced for free + */ + protected useFreeRefreshIfAvailable(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): boolean; } diff --git a/TypeScript/24WebSocket/types/controllers/TradeController.d.ts b/TypeScript/24WebSocket/types/controllers/TradeController.d.ts index e2eadbc..bc72e92 100644 --- a/TypeScript/24WebSocket/types/controllers/TradeController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/TradeController.d.ts @@ -1,33 +1,33 @@ -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { TradeHelper } from "@spt-aki/helpers/TradeHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITraderBase } from "@spt-aki/models/eft/common/tables/ITrader"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IRagfairOffer } from "@spt-aki/models/eft/ragfair/IRagfairOffer"; -import { IProcessBaseTradeRequestData } from "@spt-aki/models/eft/trade/IProcessBaseTradeRequestData"; -import { IOfferRequest, IProcessRagfairTradeRequestData } from "@spt-aki/models/eft/trade/IProcessRagfairTradeRequestData"; -import { ISellScavItemsToFenceRequestData } from "@spt-aki/models/eft/trade/ISellScavItemsToFenceRequestData"; -import { Traders } from "@spt-aki/models/enums/Traders"; -import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig"; -import { ITraderConfig } from "@spt-aki/models/spt/config/ITraderConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { RagfairServer } from "@spt-aki/servers/RagfairServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { MailSendService } from "@spt-aki/services/MailSendService"; -import { RagfairPriceService } from "@spt-aki/services/RagfairPriceService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TradeHelper } from "@spt/helpers/TradeHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITraderBase } from "@spt/models/eft/common/tables/ITrader"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IRagfairOffer } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { IProcessBaseTradeRequestData } from "@spt/models/eft/trade/IProcessBaseTradeRequestData"; +import { IOfferRequest, IProcessRagfairTradeRequestData } from "@spt/models/eft/trade/IProcessRagfairTradeRequestData"; +import { ISellScavItemsToFenceRequestData } from "@spt/models/eft/trade/ISellScavItemsToFenceRequestData"; +import { Traders } from "@spt/models/enums/Traders"; +import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig"; +import { ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { RagfairServer } from "@spt/servers/RagfairServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { MailSendService } from "@spt/services/MailSendService"; +import { RagfairPriceService } from "@spt/services/RagfairPriceService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class TradeController { protected logger: ILogger; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected eventOutputHolder: EventOutputHolder; protected tradeHelper: TradeHelper; protected timeUtil: TimeUtil; @@ -42,10 +42,9 @@ export declare class TradeController { protected ragfairPriceService: RagfairPriceService; protected mailSendService: MailSendService; protected configServer: ConfigServer; - protected roubleTpl: string; protected ragfairConfig: IRagfairConfig; protected traderConfig: ITraderConfig; - constructor(logger: ILogger, databaseServer: DatabaseServer, eventOutputHolder: EventOutputHolder, tradeHelper: TradeHelper, timeUtil: TimeUtil, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, ragfairServer: RagfairServer, httpResponse: HttpResponseUtil, localisationService: LocalisationService, ragfairPriceService: RagfairPriceService, mailSendService: MailSendService, configServer: ConfigServer); + constructor(logger: ILogger, databaseService: DatabaseService, eventOutputHolder: EventOutputHolder, tradeHelper: TradeHelper, timeUtil: TimeUtil, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, ragfairServer: RagfairServer, httpResponse: HttpResponseUtil, localisationService: LocalisationService, ragfairPriceService: RagfairPriceService, mailSendService: MailSendService, configServer: ConfigServer); /** Handle TradingConfirm event */ confirmTrading(pmcData: IPmcData, request: IProcessBaseTradeRequestData, sessionID: string): IItemEventRouterResponse; /** Handle RagFairBuyOffer event */ diff --git a/TypeScript/24WebSocket/types/controllers/TraderController.d.ts b/TypeScript/24WebSocket/types/controllers/TraderController.d.ts index a8826b4..7fc6d78 100644 --- a/TypeScript/24WebSocket/types/controllers/TraderController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/TraderController.d.ts @@ -1,21 +1,21 @@ -import { FenceBaseAssortGenerator } from "@spt-aki/generators/FenceBaseAssortGenerator"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { TraderAssortHelper } from "@spt-aki/helpers/TraderAssortHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { ITraderAssort, ITraderBase } from "@spt-aki/models/eft/common/tables/ITrader"; -import { ITraderConfig } from "@spt-aki/models/spt/config/ITraderConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { FenceService } from "@spt-aki/services/FenceService"; -import { TraderAssortService } from "@spt-aki/services/TraderAssortService"; -import { TraderPurchasePersisterService } from "@spt-aki/services/TraderPurchasePersisterService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { FenceBaseAssortGenerator } from "@spt/generators/FenceBaseAssortGenerator"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderAssortHelper } from "@spt/helpers/TraderAssortHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { ITraderAssort, ITraderBase } from "@spt/models/eft/common/tables/ITrader"; +import { ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { FenceService } from "@spt/services/FenceService"; +import { TraderAssortService } from "@spt/services/TraderAssortService"; +import { TraderPurchasePersisterService } from "@spt/services/TraderPurchasePersisterService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class TraderController { protected logger: ILogger; protected timeUtil: TimeUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected traderAssortHelper: TraderAssortHelper; protected profileHelper: ProfileHelper; protected traderHelper: TraderHelper; @@ -26,7 +26,7 @@ export declare class TraderController { protected configServer: ConfigServer; protected cloner: ICloner; protected traderConfig: ITraderConfig; - constructor(logger: ILogger, timeUtil: TimeUtil, databaseServer: DatabaseServer, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, traderAssortService: TraderAssortService, traderPurchasePersisterService: TraderPurchasePersisterService, fenceService: FenceService, fenceBaseAssortGenerator: FenceBaseAssortGenerator, configServer: ConfigServer, cloner: ICloner); + constructor(logger: ILogger, timeUtil: TimeUtil, databaseService: DatabaseService, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, traderAssortService: TraderAssortService, traderPurchasePersisterService: TraderPurchasePersisterService, fenceService: FenceService, fenceBaseAssortGenerator: FenceBaseAssortGenerator, configServer: ConfigServer, cloner: ICloner); /** * Runs when onLoad event is fired * Iterate over traders, ensure a pristine copy of their assorts is stored in traderAssortService diff --git a/TypeScript/24WebSocket/types/controllers/WeatherController.d.ts b/TypeScript/24WebSocket/types/controllers/WeatherController.d.ts index e25dc16..7d24954 100644 --- a/TypeScript/24WebSocket/types/controllers/WeatherController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/WeatherController.d.ts @@ -1,8 +1,8 @@ -import { WeatherGenerator } from "@spt-aki/generators/WeatherGenerator"; -import { IWeatherData } from "@spt-aki/models/eft/weather/IWeatherData"; -import { IWeatherConfig } from "@spt-aki/models/spt/config/IWeatherConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; +import { WeatherGenerator } from "@spt/generators/WeatherGenerator"; +import { IWeatherData } from "@spt/models/eft/weather/IWeatherData"; +import { IWeatherConfig } from "@spt/models/spt/config/IWeatherConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; export declare class WeatherController { protected weatherGenerator: WeatherGenerator; protected logger: ILogger; diff --git a/TypeScript/24WebSocket/types/controllers/WishlistController.d.ts b/TypeScript/24WebSocket/types/controllers/WishlistController.d.ts index 01c4465..ee4d970 100644 --- a/TypeScript/24WebSocket/types/controllers/WishlistController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/WishlistController.d.ts @@ -1,7 +1,7 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IWishlistActionData } from "@spt-aki/models/eft/wishlist/IWishlistActionData"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IWishlistActionData } from "@spt/models/eft/wishlist/IWishlistActionData"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; export declare class WishlistController { protected eventOutputHolder: EventOutputHolder; constructor(eventOutputHolder: EventOutputHolder); diff --git a/TypeScript/24WebSocket/types/di/Container.d.ts b/TypeScript/24WebSocket/types/di/Container.d.ts index e339a3b..0619968 100644 --- a/TypeScript/24WebSocket/types/di/Container.d.ts +++ b/TypeScript/24WebSocket/types/di/Container.d.ts @@ -5,6 +5,7 @@ import { DependencyContainer } from "tsyringe"; export declare class Container { static registerPostLoadTypes(container: DependencyContainer, childContainer: DependencyContainer): void; static registerTypes(depContainer: DependencyContainer): void; + static registerPrimaryDependencies(depContainer: DependencyContainer): void; static registerListTypes(depContainer: DependencyContainer): void; private static registerUtils; private static registerRouters; diff --git a/TypeScript/24WebSocket/types/di/Router.d.ts b/TypeScript/24WebSocket/types/di/Router.d.ts index 437e55d..01ca547 100644 --- a/TypeScript/24WebSocket/types/di/Router.d.ts +++ b/TypeScript/24WebSocket/types/di/Router.d.ts @@ -1,6 +1,6 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IAkiProfile } from "@spt-aki/models/eft/profile/IAkiProfile"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; export declare class Router { protected handledRoutes: HandledRoute[]; getTopLevelRoute(): string; @@ -24,7 +24,7 @@ export declare class ItemEventRouterDefinition extends Router { handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string, output: IItemEventRouterResponse): Promise; } export declare class SaveLoadRouter extends Router { - handleLoad(profile: IAkiProfile): IAkiProfile; + handleLoad(profile: ISptProfile): ISptProfile; } export declare class HandledRoute { route: string; diff --git a/TypeScript/24WebSocket/types/generators/BotEquipmentModGenerator.d.ts b/TypeScript/24WebSocket/types/generators/BotEquipmentModGenerator.d.ts index f0e9f35..419120f 100644 --- a/TypeScript/24WebSocket/types/generators/BotEquipmentModGenerator.d.ts +++ b/TypeScript/24WebSocket/types/generators/BotEquipmentModGenerator.d.ts @@ -1,37 +1,39 @@ -import { BotGeneratorHelper } from "@spt-aki/helpers/BotGeneratorHelper"; -import { BotHelper } from "@spt-aki/helpers/BotHelper"; -import { BotWeaponGeneratorHelper } from "@spt-aki/helpers/BotWeaponGeneratorHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PresetHelper } from "@spt-aki/helpers/PresetHelper"; -import { ProbabilityHelper } from "@spt-aki/helpers/ProbabilityHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { WeightedRandomHelper } from "@spt-aki/helpers/WeightedRandomHelper"; -import { IPreset } from "@spt-aki/models/eft/common/IGlobals"; -import { Mods, ModsChances } from "@spt-aki/models/eft/common/tables/IBotType"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITemplateItem, Slot } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { ModSpawn } from "@spt-aki/models/enums/ModSpawn"; -import { IChooseRandomCompatibleModResult } from "@spt-aki/models/spt/bots/IChooseRandomCompatibleModResult"; -import { EquipmentFilterDetails, EquipmentFilters, IBotConfig } from "@spt-aki/models/spt/config/IBotConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { BotEquipmentFilterService } from "@spt-aki/services/BotEquipmentFilterService"; -import { BotEquipmentModPoolService } from "@spt-aki/services/BotEquipmentModPoolService"; -import { BotModLimits, BotWeaponModLimitService } from "@spt-aki/services/BotWeaponModLimitService"; -import { ItemFilterService } from "@spt-aki/services/ItemFilterService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { IGenerateEquipmentProperties } from "./BotInventoryGenerator"; -import { IFilterPlateModsForSlotByLevelResult } from "./IFilterPlateModsForSlotByLevelResult"; +import { BotGeneratorHelper } from "@spt/helpers/BotGeneratorHelper"; +import { BotHelper } from "@spt/helpers/BotHelper"; +import { BotWeaponGeneratorHelper } from "@spt/helpers/BotWeaponGeneratorHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProbabilityHelper } from "@spt/helpers/ProbabilityHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IPreset } from "@spt/models/eft/common/IGlobals"; +import { Mods, ModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem, Slot } from "@spt/models/eft/common/tables/ITemplateItem"; +import { ModSpawn } from "@spt/models/enums/ModSpawn"; +import { IChooseRandomCompatibleModResult } from "@spt/models/spt/bots/IChooseRandomCompatibleModResult"; +import { IFilterPlateModsForSlotByLevelResult } from "@spt/models/spt/bots/IFilterPlateModsForSlotByLevelResult"; +import { IGenerateEquipmentProperties } from "@spt/models/spt/bots/IGenerateEquipmentProperties"; +import { IGenerateWeaponRequest } from "@spt/models/spt/bots/IGenerateWeaponRequest"; +import { IModToSpawnRequest } from "@spt/models/spt/bots/IModToSpawnRequest"; +import { EquipmentFilterDetails, EquipmentFilters, IBotConfig } from "@spt/models/spt/config/IBotConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService"; +import { BotEquipmentModPoolService } from "@spt/services/BotEquipmentModPoolService"; +import { BotWeaponModLimitService } from "@spt/services/BotWeaponModLimitService"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { ItemFilterService } from "@spt/services/ItemFilterService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class BotEquipmentModGenerator { protected logger: ILogger; protected hashUtil: HashUtil; protected randomUtil: RandomUtil; protected probabilityHelper: ProbabilityHelper; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected itemHelper: ItemHelper; protected botEquipmentFilterService: BotEquipmentFilterService; protected itemFilterService: ItemFilterService; @@ -47,7 +49,7 @@ export declare class BotEquipmentModGenerator { protected configServer: ConfigServer; protected cloner: ICloner; protected botConfig: IBotConfig; - constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, probabilityHelper: ProbabilityHelper, databaseServer: DatabaseServer, itemHelper: ItemHelper, botEquipmentFilterService: BotEquipmentFilterService, itemFilterService: ItemFilterService, profileHelper: ProfileHelper, botWeaponModLimitService: BotWeaponModLimitService, botHelper: BotHelper, botGeneratorHelper: BotGeneratorHelper, botWeaponGeneratorHelper: BotWeaponGeneratorHelper, weightedRandomHelper: WeightedRandomHelper, presetHelper: PresetHelper, localisationService: LocalisationService, botEquipmentModPoolService: BotEquipmentModPoolService, configServer: ConfigServer, cloner: ICloner); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, probabilityHelper: ProbabilityHelper, databaseService: DatabaseService, itemHelper: ItemHelper, botEquipmentFilterService: BotEquipmentFilterService, itemFilterService: ItemFilterService, profileHelper: ProfileHelper, botWeaponModLimitService: BotWeaponModLimitService, botHelper: BotHelper, botGeneratorHelper: BotGeneratorHelper, botWeaponGeneratorHelper: BotWeaponGeneratorHelper, weightedRandomHelper: WeightedRandomHelper, presetHelper: PresetHelper, localisationService: LocalisationService, botEquipmentModPoolService: BotEquipmentModPoolService, configServer: ConfigServer, cloner: ICloner); /** * Check mods are compatible and add to array * @param equipment Equipment item to add mods to @@ -69,20 +71,11 @@ export declare class BotEquipmentModGenerator { protected filterPlateModsForSlotByLevel(settings: IGenerateEquipmentProperties, modSlot: string, existingPlateTplPool: string[], armorItem: ITemplateItem): IFilterPlateModsForSlotByLevelResult; /** * Add mods to a weapon using the provided mod pool - * @param sessionId session id - * @param weapon Weapon to add mods to - * @param modPool Pool of compatible mods to attach to weapon - * @param weaponId parentId of weapon - * @param parentTemplate Weapon which mods will be generated on - * @param modSpawnChances Mod spawn chances - * @param ammoTpl Ammo tpl to use when generating magazines/cartridges - * @param botRole Role of bot weapon is generated for - * @param botLevel Level of the bot weapon is being generated for - * @param modLimits limits placed on certain mod types per gun - * @param botEquipmentRole role of bot when accessing bot.json equipment config settings + * @param sessionId Session id + * @param request Data used to generate the weapon * @returns Weapon + mods array */ - generateModsForWeapon(sessionId: string, weapon: Item[], modPool: Mods, weaponId: string, parentTemplate: ITemplateItem, modSpawnChances: ModsChances, ammoTpl: string, botRole: string, botLevel: number, modLimits: BotModLimits, botEquipmentRole: string): Item[]; + generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): Item[]; /** * Is this modslot a front or rear sight * @param modSlot Slot to check @@ -101,8 +94,19 @@ export declare class BotEquipmentModGenerator { * @param modSpawnChances Chance dictionary to update */ protected adjustSlotSpawnChances(modSpawnChances: ModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; - protected modSlotCanHoldMuzzleDevices(modSlot: string, modsParentId: string): boolean; - protected sortModKeys(unsortedKeys: string[]): string[]; + /** + * Does the provided modSlot allow muzzle-related items + * @param modSlot Slot id to check + * @param modsParentId OPTIONAL: parent id of modslot being checked + * @returns True if modSlot can have muzzle-related items + */ + protected modSlotCanHoldMuzzleDevices(modSlot: string, modsParentId?: string): boolean; + /** + * Sort mod slots into an ordering that maximises chance of a successful weapon generation + * @param unsortedSlotKeys Array of mod slot strings to sort + * @returns Sorted array + */ + protected sortModKeys(unsortedSlotKeys: string[]): string[]; /** * Get a Slot property for an item (chamber/cartridge/slot) * @param modSlot e.g patron_in_weapon @@ -120,54 +124,58 @@ export declare class BotEquipmentModGenerator { */ protected shouldModBeSpawned(itemSlot: Slot, modSlot: string, modSpawnChances: ModsChances, botEquipConfig: EquipmentFilters): ModSpawn; /** - * @param modSlot Slot mod will fit into - * @param isRandomisableSlot Will generate a randomised mod pool if true - * @param modsParent Parent slot the item will be a part of - * @param botEquipBlacklist Blacklist to prevent mods from being picked - * @param itemModPool Pool of items to pick from - * @param weapon array with only weapon tpl in it, ready for mods to be added - * @param ammoTpl ammo tpl to use if slot requires a cartridge to be added (e.g. mod_magazine) - * @param parentTemplate Parent item the mod will go into + * Choose a mod to fit into the desired slot + * @param request Data used to choose an appropriate mod with * @returns itemHelper.getItem() result */ - protected chooseModToPutIntoSlot(modSlot: string, isRandomisableSlot: boolean, botWeaponSightWhitelist: Record, botEquipBlacklist: EquipmentFilterDetails, itemModPool: Record, weapon: Item[], ammoTpl: string, parentTemplate: ITemplateItem, modSpawnResult: ModSpawn): [boolean, ITemplateItem]; - protected pickWeaponModTplForSlotFromPool(modPool: string[], parentSlot: Slot, modSpawnResult: ModSpawn, weapon: Item[], modSlotname: string): IChooseRandomCompatibleModResult; + protected chooseModToPutIntoSlot(request: IModToSpawnRequest): [boolean, ITemplateItem] | undefined; + /** + * + * @param modPool Pool of mods that can be picked from + * @param parentSlot Slot the picked mod will have as a parent + * @param choiceTypeEnum How should chosen tpl be treated: DEFAULT_MOD/SPAWN/SKIP + * @param weapon Array of weapon items chosen item will be added to + * @param modSlotName Name of slot picked mod will be placed into + * @returns Chosen weapon details + */ + protected pickWeaponModTplForSlotFromPool(modPool: string[], parentSlot: Slot, choiceTypeEnum: ModSpawn, weapon: Item[], modSlotName: string): IChooseRandomCompatibleModResult; /** * Filter mod pool down based on various criteria: * Is slot flagged as randomisable * Is slot required * Is slot flagged as default mod only * @param itemModPool Existing pool of mods to choose - * @param modSpawnResult outcome of random roll to select if mod should be added + * @param itemSpawnCategory How should slot be handled * @param parentTemplate Mods parent * @param weaponTemplate Mods root parent (weapon/equipment) * @param modSlot name of mod slot to choose for - * @param botEquipBlacklist - * @param isRandomisableSlot is flagged as a randomisable slot - * @returns + * @param botEquipBlacklist A blacklist of items not allowed to be picked + * @param isRandomisableSlot Slot is flagged as a randomisable slot + * @returns Array of mod tpls */ - protected getModPoolForSlot(itemModPool: Record, modSpawnResult: ModSpawn, parentTemplate: ITemplateItem, weaponTemplate: ITemplateItem, modSlot: string, botEquipBlacklist: EquipmentFilterDetails, isRandomisableSlot: boolean): string[]; + protected getModPoolForSlot(itemModPool: Record, itemSpawnCategory: ModSpawn, parentTemplate: ITemplateItem, weaponTemplate: ITemplateItem, modSlot: string, botEquipBlacklist: EquipmentFilterDetails, isRandomisableSlot: boolean): string[]; /** - * Get default preset for weapon, get specific weapon presets for edge cases (mp5/silenced dvl) - * @param weaponTemplate - * @param parentItemTpl + * Get default preset for weapon OR get specific weapon presets for edge cases (mp5/silenced dvl) + * @param weaponTemplate Weapons db template + * @param parentItemTpl Tpl of the parent item * @returns Default preset found */ - protected getMatchingPreset(weaponTemplate: ITemplateItem, parentItemTpl: string): IPreset; + protected getMatchingPreset(weaponTemplate: ITemplateItem, parentItemTpl: string): IPreset | undefined; /** * Temp fix to prevent certain combinations of weapons with mods that are known to be incompatible - * @param weapon Weapon + * @param weapon Array of items that make up a weapon * @param modTpl Mod to check compatibility with weapon * @returns True if incompatible */ protected weaponModComboIsIncompatible(weapon: Item[], modTpl: string): boolean; /** - * Create a mod item with parameters as properties + * Create a mod item with provided parameters as properties + add upd property * @param modId _id * @param modTpl _tpl * @param parentId parentId * @param modSlot slotId * @param modTemplate Used to add additional properties in the upd object + * @param botRole The bots role mod is being created for * @returns Item object */ protected createModItem(modId: string, modTpl: string, parentId: string, modSlot: string, modTemplate: ITemplateItem, botRole: string): Item; @@ -179,43 +187,44 @@ export declare class BotEquipmentModGenerator { protected getAmmoContainers(): string[]; /** * Get a random mod from an items compatible mods Filter array - * @param modTpl ???? default value to return if nothing found - * @param parentSlot item mod will go into, used to get compatible items + * @param fallbackModTpl Default value to return if parentSlot Filter is empty + * @param parentSlot Item mod will go into, used to get compatible items * @param modSlot Slot to get mod to fill - * @param items items to ensure picked mod is compatible with - * @returns item tpl + * @param items Items to ensure picked mod is compatible with + * @returns Item tpl */ - protected getRandomModTplFromItemDb(modTpl: string, parentSlot: Slot, modSlot: string, items: Item[]): string; + protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: Slot, modSlot: string, items: Item[]): string | undefined; /** * Check if mod exists in db + is for a required slot * @param modToAdd Db template of mod to check * @param slotAddedToTemplate Slot object the item will be placed as child into * @param modSlot Slot the mod will fill * @param parentTemplate Db template of the mods being added - * @param botRole Bots wildspawntype (assault/pmcBot etc) - * @returns true if valid + * @param botRole Bots wildspawntype (assault/pmcBot/exUsec etc) + * @returns True if valid for slot */ protected isModValidForSlot(modToAdd: [boolean, ITemplateItem], slotAddedToTemplate: Slot, modSlot: string, parentTemplate: ITemplateItem, botRole: string): boolean; /** * Find mod tpls of a provided type and add to modPool - * @param desiredSlotName slot to look up and add we are adding tpls for (e.g mod_scope) + * @param desiredSlotName Slot to look up and add we are adding tpls for (e.g mod_scope) * @param modTemplate db object for modItem we get compatible mods from * @param modPool Pool of mods we are adding to + * @param botEquipBlacklist A blacklist of items that cannot be picked */ protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: Mods, botEquipBlacklist: EquipmentFilterDetails): void; /** * Get the possible items that fit a slot * @param parentItemId item tpl to get compatible items for * @param modSlot Slot item should fit in - * @param botEquipBlacklist equipment that should not be picked - * @returns array of compatible items for that slot + * @param botEquipBlacklist Equipment that should not be picked + * @returns Array of compatible items for that slot */ protected getDynamicModPool(parentItemId: string, modSlot: string, botEquipBlacklist: EquipmentFilterDetails): string[]; /** * Take a list of tpls and filter out blacklisted values using itemFilterService + botEquipmentBlacklist - * @param allowedMods base mods to filter - * @param botEquipBlacklist equipment blacklist - * @param modSlot slot mods belong to + * @param allowedMods Base mods to filter + * @param botEquipBlacklist Equipment blacklist + * @param modSlot Slot mods belong to * @returns Filtered array of mod tpls */ protected filterWeaponModsByBlacklist(allowedMods: string[], botEquipBlacklist: EquipmentFilterDetails, modSlot: string): string[]; @@ -225,17 +234,17 @@ export declare class BotEquipmentModGenerator { * 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" * @param items The items where the CylinderMagazine's camora are appended to - * @param modPool modPool which should include available cartridges - * @param parentId The CylinderMagazine's UID - * @param parentTemplate The CylinderMagazine's template + * @param modPool ModPool which should include available cartridges + * @param cylinderMagParentId The CylinderMagazine's UID + * @param cylinderMagTemplate The CylinderMagazine's template */ - protected fillCamora(items: Item[], modPool: Mods, parentId: string, parentTemplate: ITemplateItem): void; + protected fillCamora(items: Item[], modPool: Mods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; /** * Take a record of camoras and merge the compatible shells into one array - * @param camorasWithShells camoras we want to merge into one array - * @returns string array of shells for multiple camora sources + * @param camorasWithShells Dictionary of camoras we want to merge into one array + * @returns String array of shells for multiple camora sources */ - protected mergeCamoraPoolsTogether(camorasWithShells: Record): string[]; + protected mergeCamoraPools(camorasWithShells: Record): string[]; /** * Filter out non-whitelisted weapon scopes * Controlled by bot.json weaponSightWhitelist diff --git a/TypeScript/24WebSocket/types/generators/BotGenerator.d.ts b/TypeScript/24WebSocket/types/generators/BotGenerator.d.ts index 5825dce..8ab4371 100644 --- a/TypeScript/24WebSocket/types/generators/BotGenerator.d.ts +++ b/TypeScript/24WebSocket/types/generators/BotGenerator.d.ts @@ -1,31 +1,32 @@ -import { BotInventoryGenerator } from "@spt-aki/generators/BotInventoryGenerator"; -import { BotLevelGenerator } from "@spt-aki/generators/BotLevelGenerator"; -import { BotDifficultyHelper } from "@spt-aki/helpers/BotDifficultyHelper"; -import { BotHelper } from "@spt-aki/helpers/BotHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { WeightedRandomHelper } from "@spt-aki/helpers/WeightedRandomHelper"; -import { IBaseJsonSkills, IBaseSkill, IBotBase, Info, Health as PmcHealth, Skills as botSkills } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { Appearance, Health, IBotType } from "@spt-aki/models/eft/common/tables/IBotType"; -import { BotGenerationDetails } from "@spt-aki/models/spt/bots/BotGenerationDetails"; -import { IBotConfig } from "@spt-aki/models/spt/config/IBotConfig"; -import { IPmcConfig } from "@spt-aki/models/spt/config/IPmcConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { BotEquipmentFilterService } from "@spt-aki/services/BotEquipmentFilterService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { SeasonalEventService } from "@spt-aki/services/SeasonalEventService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { BotInventoryGenerator } from "@spt/generators/BotInventoryGenerator"; +import { BotLevelGenerator } from "@spt/generators/BotLevelGenerator"; +import { BotDifficultyHelper } from "@spt/helpers/BotDifficultyHelper"; +import { BotHelper } from "@spt/helpers/BotHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IBaseJsonSkills, IBaseSkill, IBotBase, Info, Health as PmcHealth, Skills as botSkills } from "@spt/models/eft/common/tables/IBotBase"; +import { Appearance, Health, IBotType, Inventory } from "@spt/models/eft/common/tables/IBotType"; +import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; +import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; +import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { ItemFilterService } from "@spt/services/ItemFilterService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class BotGenerator { protected logger: ILogger; protected hashUtil: HashUtil; protected randomUtil: RandomUtil; protected timeUtil: TimeUtil; protected profileHelper: ProfileHelper; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected botInventoryGenerator: BotInventoryGenerator; protected botLevelGenerator: BotLevelGenerator; protected botEquipmentFilterService: BotEquipmentFilterService; @@ -34,11 +35,12 @@ export declare class BotGenerator { protected botDifficultyHelper: BotDifficultyHelper; protected seasonalEventService: SeasonalEventService; protected localisationService: LocalisationService; + protected itemFilterService: ItemFilterService; protected configServer: ConfigServer; protected cloner: ICloner; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, databaseServer: DatabaseServer, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, botDifficultyHelper: BotDifficultyHelper, seasonalEventService: SeasonalEventService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, botDifficultyHelper: BotDifficultyHelper, seasonalEventService: SeasonalEventService, localisationService: LocalisationService, itemFilterService: ItemFilterService, configServer: ConfigServer, cloner: ICloner); /** * Generate a player scav bot object * @param role e.g. assault / pmcbot @@ -54,6 +56,14 @@ export declare class BotGenerator { * @returns constructed bot */ prepareAndGenerateBot(sessionId: string, botGenerationDetails: BotGenerationDetails): IBotBase; + /** + * Get a clone of the default bot base object and adjust its role/side/difficulty values + * @param botRole Role bot should have + * @param botSide Side bot should have + * @param difficulty Difficult bot should have + * @returns Cloned bot base + */ + protected getPreparedBotBase(botRole: string, botSide: string, difficulty: string): IBotBase; /** * Get a clone of the database\bots\base.json file * @returns IBotBase object @@ -62,14 +72,20 @@ export declare class BotGenerator { /** * Create a IBotBase object with equipment/loot/exp etc * @param sessionId Session id - * @param bot bots base file + * @param bot Bots base file * @param botJsonTemplate Bot template from db/bots/x.json * @param botGenerationDetails details on how to generate the bot * @returns IBotBase object */ protected generateBot(sessionId: string, bot: IBotBase, botJsonTemplate: IBotType, botGenerationDetails: BotGenerationDetails): IBotBase; + protected addAdditionalPocketLootWeightsForUnheardBot(botJsonTemplate: IBotType): void; /** - * Choose various appearance settings for a bot using weights + * Remove items from item.json/lootableItemBlacklist from bots inventory + * @param botInventory Bot to filter + */ + protected removeBlacklistedLootFromBotTemplate(botInventory: Inventory): void; + /** + * Choose various appearance settings for a bot using weights: head/body/feet/hands * @param bot Bot to adjust * @param appearance Appearance settings to choose from * @param botGenerationDetails Generation details @@ -80,10 +96,12 @@ export declare class BotGenerator { * @param botJsonTemplate x.json from database * @param botGenerationDetails * @param botRole role of bot e.g. assault - * @param sessionId profile session id + * @param sessionId OPTIONAL: profile session id * @returns Nickname for bot */ protected generateBotNickname(botJsonTemplate: IBotType, botGenerationDetails: BotGenerationDetails, botRole: string, sessionId?: string): string; + protected shouldSimulatePlayerScavName(botRole: string, isPlayerScav: boolean): boolean; + protected addPlayerScavNameSimulationSuffix(nickname: string): string; /** * Log the number of PMCs generated to the debug console * @param output Generated bot array, ready to send to client @@ -110,23 +128,41 @@ export declare class BotGenerator { */ protected getSkillsWithRandomisedProgressValue(skills: Record, isCommonSkills: boolean): IBaseSkill[]; /** - * Generate a random Id for a bot and apply to bots _id and aid value + * Generate an id+aid for a bot and apply * @param bot bot to update * @returns updated IBotBase object */ - protected generateId(bot: IBotBase): void; - protected generateInventoryID(profile: IBotBase): void; + protected addIdsToBot(bot: IBotBase): void; + /** + * Update a profiles profile.Inventory.equipment value with a freshly generated one + * Update all inventory items that make use of this value too + * @param profile Profile to update + */ + protected generateInventoryId(profile: IBotBase): void; /** * Randomise a bots game version and account category * Chooses from all the game versions (standard, eod etc) * Chooses account type (default, Sherpa, etc) * @param botInfo bot info object to update + * @returns Chosen game version */ - protected getRandomisedGameVersionAndCategory(botInfo: Info): void; + protected setRandomisedGameVersionAndCategory(botInfo: Info): string; /** * Add a side-specific (usec/bear) dogtag item to a bots inventory * @param bot bot to add dogtag to * @returns Bot with dogtag added */ protected addDogtagToBot(bot: IBotBase): void; + /** + * Get a dogtag tpl that matches the bots game version and side + * @param side Usec/Bear + * @param gameVersion edge_of_darkness / standard + * @returns item tpl + */ + protected getDogtagTplByGameVersionAndSide(side: string, gameVersion: string): string; + /** + * Adjust a PMCs pocket tpl to UHD if necessary, otherwise do nothing + * @param bot Pmc object to adjust + */ + protected setPmcPocketsByGameVersion(bot: IBotBase): void; } diff --git a/TypeScript/24WebSocket/types/generators/BotInventoryGenerator.d.ts b/TypeScript/24WebSocket/types/generators/BotInventoryGenerator.d.ts index 4ecd672..1ea549c 100644 --- a/TypeScript/24WebSocket/types/generators/BotInventoryGenerator.d.ts +++ b/TypeScript/24WebSocket/types/generators/BotInventoryGenerator.d.ts @@ -1,26 +1,27 @@ -import { BotEquipmentModGenerator } from "@spt-aki/generators/BotEquipmentModGenerator"; -import { BotLootGenerator } from "@spt-aki/generators/BotLootGenerator"; -import { BotWeaponGenerator } from "@spt-aki/generators/BotWeaponGenerator"; -import { BotGeneratorHelper } from "@spt-aki/helpers/BotGeneratorHelper"; -import { BotHelper } from "@spt-aki/helpers/BotHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { WeightedRandomHelper } from "@spt-aki/helpers/WeightedRandomHelper"; -import { Inventory as PmcInventory } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { Chances, Generation, IBotType, Inventory, Mods } from "@spt-aki/models/eft/common/tables/IBotType"; -import { EquipmentSlots } from "@spt-aki/models/enums/EquipmentSlots"; -import { EquipmentFilterDetails, EquipmentFilters, IBotConfig, RandomisationDetails } from "@spt-aki/models/spt/config/IBotConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { BotEquipmentModPoolService } from "@spt-aki/services/BotEquipmentModPoolService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { BotEquipmentModGenerator } from "@spt/generators/BotEquipmentModGenerator"; +import { BotLootGenerator } from "@spt/generators/BotLootGenerator"; +import { BotWeaponGenerator } from "@spt/generators/BotWeaponGenerator"; +import { BotGeneratorHelper } from "@spt/helpers/BotGeneratorHelper"; +import { BotHelper } from "@spt/helpers/BotHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { Chances, Equipment, Generation, IBotType, Inventory } from "@spt/models/eft/common/tables/IBotType"; +import { EquipmentSlots } from "@spt/models/enums/EquipmentSlots"; +import { IGenerateEquipmentProperties } from "@spt/models/spt/bots/IGenerateEquipmentProperties"; +import { EquipmentFilterDetails, IBotConfig } from "@spt/models/spt/config/IBotConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { BotEquipmentModPoolService } from "@spt/services/BotEquipmentModPoolService"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class BotInventoryGenerator { protected logger: ILogger; protected hashUtil: HashUtil; protected randomUtil: RandomUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected botWeaponGenerator: BotWeaponGenerator; protected botLootGenerator: BotLootGenerator; protected botGeneratorHelper: BotGeneratorHelper; @@ -32,7 +33,7 @@ export declare class BotInventoryGenerator { protected botEquipmentModGenerator: BotEquipmentModGenerator; protected configServer: ConfigServer; protected botConfig: IBotConfig; - constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, databaseServer: DatabaseServer, botWeaponGenerator: BotWeaponGenerator, botLootGenerator: BotLootGenerator, botGeneratorHelper: BotGeneratorHelper, botHelper: BotHelper, weightedRandomHelper: WeightedRandomHelper, itemHelper: ItemHelper, localisationService: LocalisationService, botEquipmentModPoolService: BotEquipmentModPoolService, botEquipmentModGenerator: BotEquipmentModGenerator, configServer: ConfigServer); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, databaseService: DatabaseService, botWeaponGenerator: BotWeaponGenerator, botLootGenerator: BotLootGenerator, botGeneratorHelper: BotGeneratorHelper, botHelper: BotHelper, weightedRandomHelper: WeightedRandomHelper, itemHelper: ItemHelper, localisationService: LocalisationService, botEquipmentModPoolService: BotEquipmentModPoolService, botEquipmentModGenerator: BotEquipmentModGenerator, configServer: ConfigServer); /** * Add equipment/weapons/loot to bot * @param sessionId Session id @@ -40,9 +41,10 @@ export declare class BotInventoryGenerator { * @param botRole Role bot has (assault/pmcBot) * @param isPmc Is bot being converted into a pmc * @param botLevel Level of bot being generated + * @param chosenGameVersion Game version for bot, only really applies for PMCs * @returns PmcInventory object with equipment/weapons/loot */ - generateInventory(sessionId: string, botJsonTemplate: IBotType, botRole: string, isPmc: boolean, botLevel: number): PmcInventory; + generateInventory(sessionId: string, botJsonTemplate: IBotType, botRole: string, isPmc: boolean, botLevel: number, chosenGameVersion: string): PmcInventory; /** * Create a pmcInventory object with all the base/generic items needed * @returns PmcInventory object @@ -55,18 +57,19 @@ export declare class BotInventoryGenerator { * @param botRole Role bot has (assault/pmcBot) * @param botInventory Inventory to add equipment to * @param botLevel Level of bot + * @param chosenGameVersion Game version for bot, only really applies for PMCs */ - protected generateAndAddEquipmentToBot(templateInventory: Inventory, wornItemChances: Chances, botRole: string, botInventory: PmcInventory, botLevel: number): void; + protected generateAndAddEquipmentToBot(templateInventory: Inventory, wornItemChances: Chances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string): void; /** * Remove non-armored rigs from parameter data - * @param templateInventory + * @param templateEquipment Equpiment to filter TacticalVest of */ - protected filterRigsToThoseWithProtection(templateInventory: Inventory): void; + protected filterRigsToThoseWithProtection(templateEquipment: Equipment): void; /** * Remove armored rigs from parameter data - * @param templateInventory + * @param templateEquipment Equpiment to filter TacticalVest of */ - protected filterRigsToThoseWithoutProtection(templateInventory: Inventory): void; + protected filterRigsToThoseWithoutProtection(templateEquipment: Equipment): void; /** * Add a piece of equipment with mods to inventory from the provided pools * @param settings Values to adjust how item is chosen and added to bot @@ -88,8 +91,8 @@ export declare class BotInventoryGenerator { * @param botInventory Inventory to add weapons to * @param botRole assault/pmcBot/bossTagilla etc * @param isPmc Is the bot being generated as a pmc - * @param botLevel level of bot having weapon generated * @param itemGenerationLimitsMinMax Limits for items the bot can have + * @param botLevel level of bot having weapon generated */ protected generateAndAddWeaponsToBot(templateInventory: Inventory, equipmentChances: Chances, sessionId: string, botInventory: PmcInventory, botRole: string, isPmc: boolean, itemGenerationLimitsMinMax: Generation, botLevel: number): void; /** @@ -117,20 +120,3 @@ export declare class BotInventoryGenerator { shouldSpawn: boolean; }, templateInventory: Inventory, botInventory: PmcInventory, equipmentChances: Chances, botRole: string, isPmc: boolean, itemGenerationWeights: Generation, botLevel: number): void; } -export interface IGenerateEquipmentProperties { - /** Root Slot being generated */ - rootEquipmentSlot: string; - /** Equipment pool for root slot being generated */ - rootEquipmentPool: Record; - modPool: Mods; - /** Dictionary of mod items and their chance to spawn for this bot type */ - spawnChances: Chances; - /** Role being generated for */ - botRole: string; - /** Level of bot being generated */ - botLevel: number; - inventory: PmcInventory; - botEquipmentConfig: EquipmentFilters; - /** Settings from bot.json to adjust how item is generated */ - randomisationDetails: RandomisationDetails; -} diff --git a/TypeScript/24WebSocket/types/generators/BotLevelGenerator.d.ts b/TypeScript/24WebSocket/types/generators/BotLevelGenerator.d.ts index 044c28b..dee61e2 100644 --- a/TypeScript/24WebSocket/types/generators/BotLevelGenerator.d.ts +++ b/TypeScript/24WebSocket/types/generators/BotLevelGenerator.d.ts @@ -1,15 +1,15 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; -import { IRandomisedBotLevelResult } from "@spt-aki/models/eft/bot/IRandomisedBotLevelResult"; -import { IBotBase } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { BotGenerationDetails } from "@spt-aki/models/spt/bots/BotGenerationDetails"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { MinMax } from "@spt/models/common/MinMax"; +import { IRandomisedBotLevelResult } from "@spt/models/eft/bot/IRandomisedBotLevelResult"; +import { IBotBase } from "@spt/models/eft/common/tables/IBotBase"; +import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class BotLevelGenerator { protected logger: ILogger; protected randomUtil: RandomUtil; - protected databaseServer: DatabaseServer; - constructor(logger: ILogger, randomUtil: RandomUtil, databaseServer: DatabaseServer); + protected databaseService: DatabaseService; + constructor(logger: ILogger, randomUtil: RandomUtil, databaseService: DatabaseService); /** * Return a randomised bot level and exp value * @param levelDetails Min and max of level for bot diff --git a/TypeScript/24WebSocket/types/generators/BotLootGenerator.d.ts b/TypeScript/24WebSocket/types/generators/BotLootGenerator.d.ts index db2327d..fee56ce 100644 --- a/TypeScript/24WebSocket/types/generators/BotLootGenerator.d.ts +++ b/TypeScript/24WebSocket/types/generators/BotLootGenerator.d.ts @@ -1,33 +1,33 @@ -import { BotWeaponGenerator } from "@spt-aki/generators/BotWeaponGenerator"; -import { BotGeneratorHelper } from "@spt-aki/helpers/BotGeneratorHelper"; -import { BotHelper } from "@spt-aki/helpers/BotHelper"; -import { HandbookHelper } from "@spt-aki/helpers/HandbookHelper"; -import { InventoryHelper } from "@spt-aki/helpers/InventoryHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { WeightedRandomHelper } from "@spt-aki/helpers/WeightedRandomHelper"; -import { Inventory as PmcInventory } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { IBotType, Inventory, ModsChances } from "@spt-aki/models/eft/common/tables/IBotType"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { EquipmentSlots } from "@spt-aki/models/enums/EquipmentSlots"; -import { IItemSpawnLimitSettings } from "@spt-aki/models/spt/bots/IItemSpawnLimitSettings"; -import { IBotConfig } from "@spt-aki/models/spt/config/IBotConfig"; -import { IPmcConfig } from "@spt-aki/models/spt/config/IPmcConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { BotLootCacheService } from "@spt-aki/services/BotLootCacheService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { BotWeaponGenerator } from "@spt/generators/BotWeaponGenerator"; +import { BotGeneratorHelper } from "@spt/helpers/BotGeneratorHelper"; +import { BotHelper } from "@spt/helpers/BotHelper"; +import { HandbookHelper } from "@spt/helpers/HandbookHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, Inventory, ModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { EquipmentSlots } from "@spt/models/enums/EquipmentSlots"; +import { IItemSpawnLimitSettings } from "@spt/models/spt/bots/IItemSpawnLimitSettings"; +import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; +import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class BotLootGenerator { protected logger: ILogger; protected hashUtil: HashUtil; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; protected inventoryHelper: InventoryHelper; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected handbookHelper: HandbookHelper; protected botGeneratorHelper: BotGeneratorHelper; protected botWeaponGenerator: BotWeaponGenerator; @@ -39,7 +39,7 @@ export declare class BotLootGenerator { protected cloner: ICloner; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, itemHelper: ItemHelper, inventoryHelper: InventoryHelper, databaseServer: DatabaseServer, handbookHelper: HandbookHelper, botGeneratorHelper: BotGeneratorHelper, botWeaponGenerator: BotWeaponGenerator, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, botLootCacheService: BotLootCacheService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, itemHelper: ItemHelper, inventoryHelper: InventoryHelper, databaseService: DatabaseService, handbookHelper: HandbookHelper, botGeneratorHelper: BotGeneratorHelper, botWeaponGenerator: BotWeaponGenerator, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, botLootCacheService: BotLootCacheService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); protected getItemSpawnLimitsForBot(botRole: string): IItemSpawnLimitSettings; /** * Add loot to bots containers @@ -60,7 +60,7 @@ export declare class BotLootGenerator { /** * Force healing items onto bot to ensure they can heal in-raid * @param botInventory Inventory to add items to - * @param botRole Role of bot (sptBear/sptUsec) + * @param botRole Role of bot (pmcBEAR/pmcUSEC) */ protected addForcedMedicalItemsToPmcSecure(botInventory: PmcInventory, botRole: string): void; /** diff --git a/TypeScript/24WebSocket/types/generators/BotWeaponGenerator.d.ts b/TypeScript/24WebSocket/types/generators/BotWeaponGenerator.d.ts index 87a50f9..5559bfa 100644 --- a/TypeScript/24WebSocket/types/generators/BotWeaponGenerator.d.ts +++ b/TypeScript/24WebSocket/types/generators/BotWeaponGenerator.d.ts @@ -1,30 +1,30 @@ -import { BotEquipmentModGenerator } from "@spt-aki/generators/BotEquipmentModGenerator"; -import { IInventoryMagGen } from "@spt-aki/generators/weapongen/IInventoryMagGen"; -import { BotGeneratorHelper } from "@spt-aki/helpers/BotGeneratorHelper"; -import { BotWeaponGeneratorHelper } from "@spt-aki/helpers/BotWeaponGeneratorHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { WeightedRandomHelper } from "@spt-aki/helpers/WeightedRandomHelper"; -import { Inventory as PmcInventory } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { GenerationData, Inventory, ModsChances } from "@spt-aki/models/eft/common/tables/IBotType"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { GenerateWeaponResult } from "@spt-aki/models/spt/bots/GenerateWeaponResult"; -import { IBotConfig } from "@spt-aki/models/spt/config/IBotConfig"; -import { IPmcConfig } from "@spt-aki/models/spt/config/IPmcConfig"; -import { IRepairConfig } from "@spt-aki/models/spt/config/IRepairConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { BotWeaponModLimitService } from "@spt-aki/services/BotWeaponModLimitService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { RepairService } from "@spt-aki/services/RepairService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { BotEquipmentModGenerator } from "@spt/generators/BotEquipmentModGenerator"; +import { IInventoryMagGen } from "@spt/generators/weapongen/IInventoryMagGen"; +import { BotGeneratorHelper } from "@spt/helpers/BotGeneratorHelper"; +import { BotWeaponGeneratorHelper } from "@spt/helpers/BotWeaponGeneratorHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { GenerationData, Inventory, ModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { GenerateWeaponResult } from "@spt/models/spt/bots/GenerateWeaponResult"; +import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; +import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +import { IRepairConfig } from "@spt/models/spt/config/IRepairConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { BotWeaponModLimitService } from "@spt/services/BotWeaponModLimitService"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { RepairService } from "@spt/services/RepairService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class BotWeaponGenerator { protected logger: ILogger; protected hashUtil: HashUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected itemHelper: ItemHelper; protected weightedRandomHelper: WeightedRandomHelper; protected botGeneratorHelper: BotGeneratorHelper; @@ -41,7 +41,7 @@ export declare class BotWeaponGenerator { protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; protected repairConfig: IRepairConfig; - constructor(logger: ILogger, hashUtil: HashUtil, databaseServer: DatabaseServer, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, botGeneratorHelper: BotGeneratorHelper, randomUtil: RandomUtil, configServer: ConfigServer, botWeaponGeneratorHelper: BotWeaponGeneratorHelper, botWeaponModLimitService: BotWeaponModLimitService, botEquipmentModGenerator: BotEquipmentModGenerator, localisationService: LocalisationService, repairService: RepairService, inventoryMagGenComponents: IInventoryMagGen[], cloner: ICloner); + constructor(logger: ILogger, hashUtil: HashUtil, databaseService: DatabaseService, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, botGeneratorHelper: BotGeneratorHelper, randomUtil: RandomUtil, configServer: ConfigServer, botWeaponGeneratorHelper: BotWeaponGeneratorHelper, botWeaponModLimitService: BotWeaponModLimitService, botEquipmentModGenerator: BotEquipmentModGenerator, localisationService: LocalisationService, repairService: RepairService, inventoryMagGenComponents: IInventoryMagGen[], cloner: ICloner); /** * Pick a random weapon based on weightings and generate a functional weapon * @param equipmentSlot Primary/secondary/holster diff --git a/TypeScript/24WebSocket/types/generators/FenceBaseAssortGenerator.d.ts b/TypeScript/24WebSocket/types/generators/FenceBaseAssortGenerator.d.ts index 39df8c0..784022f 100644 --- a/TypeScript/24WebSocket/types/generators/FenceBaseAssortGenerator.d.ts +++ b/TypeScript/24WebSocket/types/generators/FenceBaseAssortGenerator.d.ts @@ -1,29 +1,31 @@ -import { HandbookHelper } from "@spt-aki/helpers/HandbookHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PresetHelper } from "@spt-aki/helpers/PresetHelper"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { ITraderConfig } from "@spt-aki/models/spt/config/ITraderConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { FenceService } from "@spt-aki/services/FenceService"; -import { ItemFilterService } from "@spt-aki/services/ItemFilterService"; -import { SeasonalEventService } from "@spt-aki/services/SeasonalEventService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; +import { HandbookHelper } from "@spt/helpers/HandbookHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { FenceService } from "@spt/services/FenceService"; +import { ItemFilterService } from "@spt/services/ItemFilterService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { HashUtil } from "@spt/utils/HashUtil"; export declare class FenceBaseAssortGenerator { protected logger: ILogger; protected hashUtil: HashUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected handbookHelper: HandbookHelper; protected itemHelper: ItemHelper; protected presetHelper: PresetHelper; protected itemFilterService: ItemFilterService; protected seasonalEventService: SeasonalEventService; + protected localisationService: LocalisationService; protected configServer: ConfigServer; protected fenceService: FenceService; protected traderConfig: ITraderConfig; - constructor(logger: ILogger, hashUtil: HashUtil, databaseServer: DatabaseServer, handbookHelper: HandbookHelper, itemHelper: ItemHelper, presetHelper: PresetHelper, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, configServer: ConfigServer, fenceService: FenceService); + constructor(logger: ILogger, hashUtil: HashUtil, databaseService: DatabaseService, handbookHelper: HandbookHelper, itemHelper: ItemHelper, presetHelper: PresetHelper, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, localisationService: LocalisationService, configServer: ConfigServer, fenceService: FenceService); /** * Create base fence assorts dynamically and store in memory */ @@ -37,9 +39,9 @@ export declare class FenceBaseAssortGenerator { /** * Get the penetration power value of an ammo, works with ammo boxes and raw ammos * @param rootItemDb Ammo box or ammo item from items.db - * @returns Penetration power of passed in item, null if it doesnt have a power + * @returns Penetration power of passed in item, undefined if it doesnt have a power */ - protected getAmmoPenetrationPower(rootItemDb: ITemplateItem): number; + protected getAmmoPenetrationPower(rootItemDb: ITemplateItem): number | undefined; /** * Add soft inserts + armor plates to an armor * @param armor Armor item array to add mods into diff --git a/TypeScript/24WebSocket/types/generators/LocationGenerator.d.ts b/TypeScript/24WebSocket/types/generators/LocationGenerator.d.ts index 9554579..222b0ab 100644 --- a/TypeScript/24WebSocket/types/generators/LocationGenerator.d.ts +++ b/TypeScript/24WebSocket/types/generators/LocationGenerator.d.ts @@ -1,20 +1,21 @@ -import { ContainerHelper } from "@spt-aki/helpers/ContainerHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PresetHelper } from "@spt-aki/helpers/PresetHelper"; -import { IContainerMinMax, IStaticAmmoDetails, IStaticContainer, IStaticContainerData, IStaticForcedProps, IStaticLootDetails } from "@spt-aki/models/eft/common/ILocation"; -import { ILocationBase } from "@spt-aki/models/eft/common/ILocationBase"; -import { ILooseLoot, Spawnpoint, SpawnpointTemplate, SpawnpointsForced } from "@spt-aki/models/eft/common/ILooseLoot"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ILocationConfig } from "@spt-aki/models/spt/config/ILocationConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { SeasonalEventService } from "@spt-aki/services/SeasonalEventService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { MathUtil } from "@spt-aki/utils/MathUtil"; -import { ObjectId } from "@spt-aki/utils/ObjectId"; -import { ProbabilityObjectArray, RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { ContainerHelper } from "@spt/helpers/ContainerHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { IContainerMinMax, IStaticAmmoDetails, IStaticContainer, IStaticContainerData, IStaticForcedProps, IStaticLootDetails } from "@spt/models/eft/common/ILocation"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { ILooseLoot, Spawnpoint, SpawnpointTemplate, SpawnpointsForced } from "@spt/models/eft/common/ILooseLoot"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { ItemFilterService } from "@spt/services/ItemFilterService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { MathUtil } from "@spt/utils/MathUtil"; +import { ObjectId } from "@spt/utils/ObjectId"; +import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; export interface IContainerItem { items: Item[]; width: number; @@ -28,7 +29,7 @@ export interface IContainerGroupCount { } export declare class LocationGenerator { protected logger: ILogger; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected objectId: ObjectId; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; @@ -37,14 +38,15 @@ export declare class LocationGenerator { protected containerHelper: ContainerHelper; protected presetHelper: PresetHelper; protected localisationService: LocalisationService; + protected itemFilterService: ItemFilterService; protected configServer: ConfigServer; protected cloner: ICloner; protected locationConfig: ILocationConfig; - constructor(logger: ILogger, databaseServer: DatabaseServer, objectId: ObjectId, randomUtil: RandomUtil, itemHelper: ItemHelper, mathUtil: MathUtil, seasonalEventService: SeasonalEventService, containerHelper: ContainerHelper, presetHelper: PresetHelper, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + constructor(logger: ILogger, databaseService: DatabaseService, objectId: ObjectId, randomUtil: RandomUtil, itemHelper: ItemHelper, mathUtil: MathUtil, seasonalEventService: SeasonalEventService, containerHelper: ContainerHelper, presetHelper: PresetHelper, localisationService: LocalisationService, itemFilterService: ItemFilterService, configServer: ConfigServer, cloner: ICloner); /** * Create an array of container objects with randomised loot * @param locationBase Map base to generate containers for - * @param staticAmmoDist Static ammo distribution - database.loot.staticAmmo + * @param staticAmmoDist Static ammo distribution * @returns Array of container objects */ generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): SpawnpointTemplate[]; @@ -143,6 +145,6 @@ export declare class LocationGenerator { * @param chosenTpl Tpl we want to get item with * @returns Item object */ - protected getItemInArray(items: Item[], chosenTpl: string): Item; + protected getItemInArray(items: Item[], chosenTpl: string): Item | undefined; protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; } diff --git a/TypeScript/24WebSocket/types/generators/LootGenerator.d.ts b/TypeScript/24WebSocket/types/generators/LootGenerator.d.ts index f9b40fa..953ac3d 100644 --- a/TypeScript/24WebSocket/types/generators/LootGenerator.d.ts +++ b/TypeScript/24WebSocket/types/generators/LootGenerator.d.ts @@ -1,20 +1,20 @@ -import { InventoryHelper } from "@spt-aki/helpers/InventoryHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PresetHelper } from "@spt-aki/helpers/PresetHelper"; -import { WeightedRandomHelper } from "@spt-aki/helpers/WeightedRandomHelper"; -import { IPreset } from "@spt-aki/models/eft/common/IGlobals"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { ISealedAirdropContainerSettings, RewardDetails } from "@spt-aki/models/spt/config/IInventoryConfig"; -import { LootItem } from "@spt-aki/models/spt/services/LootItem"; -import { LootRequest } from "@spt-aki/models/spt/services/LootRequest"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { ItemFilterService } from "@spt-aki/services/ItemFilterService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { RagfairLinkedItemService } from "@spt-aki/services/RagfairLinkedItemService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IPreset } from "@spt/models/eft/common/IGlobals"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { ISealedAirdropContainerSettings, RewardDetails } from "@spt/models/spt/config/IInventoryConfig"; +import { LootItem } from "@spt/models/spt/services/LootItem"; +import { LootRequest } from "@spt/models/spt/services/LootRequest"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { ItemFilterService } from "@spt/services/ItemFilterService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { RagfairLinkedItemService } from "@spt/services/RagfairLinkedItemService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; type ItemLimit = { current: number; max: number; @@ -22,7 +22,7 @@ type ItemLimit = { export declare class LootGenerator { protected logger: ILogger; protected hashUtil: HashUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; protected presetHelper: PresetHelper; @@ -31,7 +31,7 @@ export declare class LootGenerator { protected localisationService: LocalisationService; protected ragfairLinkedItemService: RagfairLinkedItemService; protected itemFilterService: ItemFilterService; - constructor(logger: ILogger, hashUtil: HashUtil, databaseServer: DatabaseServer, randomUtil: RandomUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, inventoryHelper: InventoryHelper, weightedRandomHelper: WeightedRandomHelper, localisationService: LocalisationService, ragfairLinkedItemService: RagfairLinkedItemService, itemFilterService: ItemFilterService); + constructor(logger: ILogger, hashUtil: HashUtil, databaseService: DatabaseService, randomUtil: RandomUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, inventoryHelper: InventoryHelper, weightedRandomHelper: WeightedRandomHelper, localisationService: LocalisationService, ragfairLinkedItemService: RagfairLinkedItemService, itemFilterService: ItemFilterService); /** * Generate a list of items based on configuration options parameter * @param options parameters to adjust how loot is generated @@ -44,7 +44,7 @@ export declare class LootGenerator { * @param options Loot request options - armor level etc * @returns True if item has desired armor level */ - protected armorIsDesiredProtectionLevel(armor: IPreset, options: LootRequest): boolean; + protected isArmorOfDesiredProtectionLevel(armor: IPreset, options: LootRequest): boolean; /** * Construct item limit record to hold max and current item count for each item type * @param limits limits as defined in config diff --git a/TypeScript/24WebSocket/types/generators/PMCLootGenerator.d.ts b/TypeScript/24WebSocket/types/generators/PMCLootGenerator.d.ts index a7a36e9..f197435 100644 --- a/TypeScript/24WebSocket/types/generators/PMCLootGenerator.d.ts +++ b/TypeScript/24WebSocket/types/generators/PMCLootGenerator.d.ts @@ -1,19 +1,19 @@ -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { WeightedRandomHelper } from "@spt-aki/helpers/WeightedRandomHelper"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { IPmcConfig } from "@spt-aki/models/spt/config/IPmcConfig"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { ItemFilterService } from "@spt-aki/services/ItemFilterService"; -import { RagfairPriceService } from "@spt-aki/services/RagfairPriceService"; -import { SeasonalEventService } from "@spt-aki/services/SeasonalEventService"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { ItemFilterService } from "@spt/services/ItemFilterService"; +import { RagfairPriceService } from "@spt/services/RagfairPriceService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; /** * Handle the generation of dynamic PMC loot in pockets and backpacks * and the removal of blacklisted items */ export declare class PMCLootGenerator { protected itemHelper: ItemHelper; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected configServer: ConfigServer; protected itemFilterService: ItemFilterService; protected ragfairPriceService: RagfairPriceService; @@ -23,8 +23,7 @@ export declare class PMCLootGenerator { protected vestLootPool: Record; protected backpackLootPool: Record; protected pmcConfig: IPmcConfig; - protected roubleTpl: string; - constructor(itemHelper: ItemHelper, databaseServer: DatabaseServer, configServer: ConfigServer, itemFilterService: ItemFilterService, ragfairPriceService: RagfairPriceService, seasonalEventService: SeasonalEventService, weightedRandomHelper: WeightedRandomHelper); + constructor(itemHelper: ItemHelper, databaseService: DatabaseService, configServer: ConfigServer, itemFilterService: ItemFilterService, ragfairPriceService: RagfairPriceService, seasonalEventService: SeasonalEventService, weightedRandomHelper: WeightedRandomHelper); /** * Create an array of loot items a PMC can have in their pockets * @returns string array of tpls @@ -42,6 +41,13 @@ export declare class PMCLootGenerator { * @returns true if it fits */ protected itemFitsInto2By2Slot(item: ITemplateItem): boolean; + /** + * Check if item has a width/height that lets it fit into a 1x2 slot + * 1x1 / 1x2 / 2x1 + * @param item Item to check size of + * @returns true if it fits + */ + protected itemFitsInto1By2Slot(item: ITemplateItem): boolean; /** * Create an array of loot items a PMC can have in their backpack * @returns string array of tpls diff --git a/TypeScript/24WebSocket/types/generators/PlayerScavGenerator.d.ts b/TypeScript/24WebSocket/types/generators/PlayerScavGenerator.d.ts index 813fd17..2414150 100644 --- a/TypeScript/24WebSocket/types/generators/PlayerScavGenerator.d.ts +++ b/TypeScript/24WebSocket/types/generators/PlayerScavGenerator.d.ts @@ -1,26 +1,26 @@ -import { BotGenerator } from "@spt-aki/generators/BotGenerator"; -import { BotGeneratorHelper } from "@spt-aki/helpers/BotGeneratorHelper"; -import { BotHelper } from "@spt-aki/helpers/BotHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IBotBase, Skills, Stats } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { IBotType } from "@spt-aki/models/eft/common/tables/IBotType"; -import { IPlayerScavConfig, KarmaLevel } from "@spt-aki/models/spt/config/IPlayerScavConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { BotLootCacheService } from "@spt-aki/services/BotLootCacheService"; -import { FenceService } from "@spt-aki/services/FenceService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { BotGenerator } from "@spt/generators/BotGenerator"; +import { BotGeneratorHelper } from "@spt/helpers/BotGeneratorHelper"; +import { BotHelper } from "@spt/helpers/BotHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBotBase, Skills, Stats } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType } from "@spt/models/eft/common/tables/IBotType"; +import { IPlayerScavConfig, KarmaLevel } from "@spt/models/spt/config/IPlayerScavConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { FenceService } from "@spt/services/FenceService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class PlayerScavGenerator { protected logger: ILogger; protected randomUtil: RandomUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected hashUtil: HashUtil; protected itemHelper: ItemHelper; protected botGeneratorHelper: BotGeneratorHelper; @@ -34,7 +34,7 @@ export declare class PlayerScavGenerator { protected configServer: ConfigServer; protected cloner: ICloner; protected playerScavConfig: IPlayerScavConfig; - constructor(logger: ILogger, randomUtil: RandomUtil, databaseServer: DatabaseServer, hashUtil: HashUtil, itemHelper: ItemHelper, botGeneratorHelper: BotGeneratorHelper, saveServer: SaveServer, profileHelper: ProfileHelper, botHelper: BotHelper, fenceService: FenceService, botLootCacheService: BotLootCacheService, localisationService: LocalisationService, botGenerator: BotGenerator, configServer: ConfigServer, cloner: ICloner); + constructor(logger: ILogger, randomUtil: RandomUtil, databaseService: DatabaseService, hashUtil: HashUtil, itemHelper: ItemHelper, botGeneratorHelper: BotGeneratorHelper, saveServer: SaveServer, profileHelper: ProfileHelper, botHelper: BotHelper, fenceService: FenceService, botLootCacheService: BotLootCacheService, localisationService: LocalisationService, botGenerator: BotGenerator, configServer: ConfigServer, cloner: ICloner); /** * Update a player profile to include a new player scav profile * @param sessionID session id to specify what profile is updated diff --git a/TypeScript/24WebSocket/types/generators/RagfairAssortGenerator.d.ts b/TypeScript/24WebSocket/types/generators/RagfairAssortGenerator.d.ts index 7b1a786..4c6cf1c 100644 --- a/TypeScript/24WebSocket/types/generators/RagfairAssortGenerator.d.ts +++ b/TypeScript/24WebSocket/types/generators/RagfairAssortGenerator.d.ts @@ -1,12 +1,12 @@ -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PresetHelper } from "@spt-aki/helpers/PresetHelper"; -import { IPreset } from "@spt-aki/models/eft/common/IGlobals"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SeasonalEventService } from "@spt-aki/services/SeasonalEventService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { IPreset } from "@spt/models/eft/common/IGlobals"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { HashUtil } from "@spt/utils/HashUtil"; export declare class RagfairAssortGenerator { protected hashUtil: HashUtil; protected itemHelper: ItemHelper; diff --git a/TypeScript/24WebSocket/types/generators/RagfairOfferGenerator.d.ts b/TypeScript/24WebSocket/types/generators/RagfairOfferGenerator.d.ts index 4b4c6ea..9435390 100644 --- a/TypeScript/24WebSocket/types/generators/RagfairOfferGenerator.d.ts +++ b/TypeScript/24WebSocket/types/generators/RagfairOfferGenerator.d.ts @@ -1,34 +1,38 @@ -import { RagfairAssortGenerator } from "@spt-aki/generators/RagfairAssortGenerator"; -import { HandbookHelper } from "@spt-aki/helpers/HandbookHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper"; -import { PresetHelper } from "@spt-aki/helpers/PresetHelper"; -import { RagfairServerHelper } from "@spt-aki/helpers/RagfairServerHelper"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { IBarterScheme } from "@spt-aki/models/eft/common/tables/ITrader"; -import { IRagfairOffer, OfferRequirement } from "@spt-aki/models/eft/ragfair/IRagfairOffer"; -import { Dynamic, IArmorPlateBlacklistSettings, IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { FenceService } from "@spt-aki/services/FenceService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { RagfairOfferService } from "@spt-aki/services/RagfairOfferService"; -import { RagfairPriceService } from "@spt-aki/services/RagfairPriceService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { RagfairAssortGenerator } from "@spt/generators/RagfairAssortGenerator"; +import { BotHelper } from "@spt/helpers/BotHelper"; +import { HandbookHelper } from "@spt/helpers/HandbookHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PaymentHelper } from "@spt/helpers/PaymentHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { RagfairServerHelper } from "@spt/helpers/RagfairServerHelper"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; +import { IRagfairOffer, IRagfairOfferUser, OfferRequirement } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { Dynamic, IArmorPlateBlacklistSettings, IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { FenceService } from "@spt/services/FenceService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { RagfairOfferService } from "@spt/services/RagfairOfferService"; +import { RagfairPriceService } from "@spt/services/RagfairPriceService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class RagfairOfferGenerator { protected logger: ILogger; protected hashUtil: HashUtil; protected randomUtil: RandomUtil; protected timeUtil: TimeUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected ragfairServerHelper: RagfairServerHelper; + protected profileHelper: ProfileHelper; protected handbookHelper: HandbookHelper; + protected botHelper: BotHelper; protected saveServer: SaveServer; protected presetHelper: PresetHelper; protected ragfairAssortGenerator: RagfairAssortGenerator; @@ -47,7 +51,7 @@ export declare class RagfairOfferGenerator { }[]; /** Internal counter to ensure each offer created has a unique value for its intId property */ protected offerCounter: number; - constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, databaseServer: DatabaseServer, ragfairServerHelper: RagfairServerHelper, handbookHelper: HandbookHelper, saveServer: SaveServer, presetHelper: PresetHelper, ragfairAssortGenerator: RagfairAssortGenerator, ragfairOfferService: RagfairOfferService, ragfairPriceService: RagfairPriceService, localisationService: LocalisationService, paymentHelper: PaymentHelper, fenceService: FenceService, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, databaseService: DatabaseService, ragfairServerHelper: RagfairServerHelper, profileHelper: ProfileHelper, handbookHelper: HandbookHelper, botHelper: BotHelper, saveServer: SaveServer, presetHelper: PresetHelper, ragfairAssortGenerator: RagfairAssortGenerator, ragfairOfferService: RagfairOfferService, ragfairPriceService: RagfairPriceService, localisationService: LocalisationService, paymentHelper: PaymentHelper, fenceService: FenceService, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner); /** * Create a flea offer and store it in the Ragfair server offers array * @param userID Owner of the offer @@ -56,9 +60,9 @@ export declare class RagfairOfferGenerator { * @param barterScheme Cost of item (currency or barter) * @param loyalLevel Loyalty level needed to buy item * @param sellInOnePiece Flags sellInOnePiece to be true - * @returns IRagfairOffer + * @returns Created flea offer */ - createFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; + createAndAddFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; /** * Create an offer object ready to send to ragfairOfferService.addOffer() * @param userID Owner of the offer @@ -66,10 +70,17 @@ export declare class RagfairOfferGenerator { * @param items Items in the offer * @param barterScheme Cost of item (currency or barter) * @param loyalLevel Loyalty level needed to buy item - * @param sellInOnePiece Set StackObjectsCount to 1 + * @param isPackOffer Is offer being created flaged as a pack * @returns IRagfairOffer */ - protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; + protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; + /** + * Create the user object stored inside each flea offer object + * @param userID user creating the offer + * @param isTrader Is the user creating the offer a trader + * @returns IRagfairOfferUser + */ + createUserDataForFleaOffer(userID: string, isTrader: boolean): IRagfairOfferUser; /** * Calculate the offer price that's listed on the flea listing * @param offerRequirements barter requirements for offer @@ -159,7 +170,7 @@ export declare class RagfairOfferGenerator { * @param tpl Item to look for matching condition object * @returns condition id */ - protected getDynamicConditionIdForTpl(tpl: string): string; + protected getDynamicConditionIdForTpl(tpl: string): string | undefined; /** * Alter an items condition based on its item base type * @param conditionSettingsId also the parentId of item being altered diff --git a/TypeScript/24WebSocket/types/generators/RepeatableQuestGenerator.d.ts b/TypeScript/24WebSocket/types/generators/RepeatableQuestGenerator.d.ts index 8c9345d..77c4e79 100644 --- a/TypeScript/24WebSocket/types/generators/RepeatableQuestGenerator.d.ts +++ b/TypeScript/24WebSocket/types/generators/RepeatableQuestGenerator.d.ts @@ -1,25 +1,25 @@ -import { RepeatableQuestRewardGenerator } from "@spt-aki/generators/RepeatableQuestRewardGenerator"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { RepeatableQuestHelper } from "@spt-aki/helpers/RepeatableQuestHelper"; -import { Exit } from "@spt-aki/models/eft/common/ILocationBase"; -import { TraderInfo } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { IQuestCondition, IQuestConditionCounterCondition } from "@spt-aki/models/eft/common/tables/IQuest"; -import { IRepeatableQuest } from "@spt-aki/models/eft/common/tables/IRepeatableQuests"; -import { IBossInfo, IEliminationConfig, IQuestConfig, IRepeatableQuestConfig } from "@spt-aki/models/spt/config/IQuestConfig"; -import { IQuestTypePool } from "@spt-aki/models/spt/repeatable/IQuestTypePool"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { MathUtil } from "@spt-aki/utils/MathUtil"; -import { ObjectId } from "@spt-aki/utils/ObjectId"; -import { ProbabilityObjectArray, RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { RepeatableQuestRewardGenerator } from "@spt/generators/RepeatableQuestRewardGenerator"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { RepeatableQuestHelper } from "@spt/helpers/RepeatableQuestHelper"; +import { Exit } from "@spt/models/eft/common/ILocationBase"; +import { TraderInfo } from "@spt/models/eft/common/tables/IBotBase"; +import { IQuestCondition, IQuestConditionCounterCondition } from "@spt/models/eft/common/tables/IQuest"; +import { IRepeatableQuest } from "@spt/models/eft/common/tables/IRepeatableQuests"; +import { IBossInfo, IEliminationConfig, IQuestConfig, IRepeatableQuestConfig } from "@spt/models/spt/config/IQuestConfig"; +import { IQuestTypePool } from "@spt/models/spt/repeatable/IQuestTypePool"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { MathUtil } from "@spt/utils/MathUtil"; +import { ObjectId } from "@spt/utils/ObjectId"; +import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; export declare class RepeatableQuestGenerator { protected logger: ILogger; protected randomUtil: RandomUtil; protected mathUtil: MathUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected itemHelper: ItemHelper; protected localisationService: LocalisationService; protected objectId: ObjectId; @@ -28,7 +28,7 @@ export declare class RepeatableQuestGenerator { protected configServer: ConfigServer; protected cloner: ICloner; protected questConfig: IQuestConfig; - constructor(logger: ILogger, randomUtil: RandomUtil, mathUtil: MathUtil, databaseServer: DatabaseServer, itemHelper: ItemHelper, localisationService: LocalisationService, objectId: ObjectId, repeatableQuestHelper: RepeatableQuestHelper, repeatableQuestRewardGenerator: RepeatableQuestRewardGenerator, configServer: ConfigServer, cloner: ICloner); + constructor(logger: ILogger, randomUtil: RandomUtil, mathUtil: MathUtil, databaseService: DatabaseService, itemHelper: ItemHelper, localisationService: LocalisationService, objectId: ObjectId, repeatableQuestHelper: RepeatableQuestHelper, repeatableQuestRewardGenerator: RepeatableQuestRewardGenerator, configServer: ConfigServer, cloner: ICloner); /** * 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 diff --git a/TypeScript/24WebSocket/types/generators/RepeatableQuestRewardGenerator.d.ts b/TypeScript/24WebSocket/types/generators/RepeatableQuestRewardGenerator.d.ts index a23afd3..1e09994 100644 --- a/TypeScript/24WebSocket/types/generators/RepeatableQuestRewardGenerator.d.ts +++ b/TypeScript/24WebSocket/types/generators/RepeatableQuestRewardGenerator.d.ts @@ -1,25 +1,26 @@ -import { HandbookHelper } from "@spt-aki/helpers/HandbookHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PresetHelper } from "@spt-aki/helpers/PresetHelper"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { IQuestReward, IQuestRewards } from "@spt-aki/models/eft/common/tables/IQuest"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { IBaseQuestConfig, IQuestConfig, IRepeatableQuestConfig } from "@spt-aki/models/spt/config/IQuestConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { ItemFilterService } from "@spt-aki/services/ItemFilterService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { SeasonalEventService } from "@spt-aki/services/SeasonalEventService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { MathUtil } from "@spt-aki/utils/MathUtil"; -import { ObjectId } from "@spt-aki/utils/ObjectId"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { HandbookHelper } from "@spt/helpers/HandbookHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IQuestReward, IQuestRewards } from "@spt/models/eft/common/tables/IQuest"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { IBaseQuestConfig, IQuestConfig, IRepeatableQuestConfig, IRewardScaling } from "@spt/models/spt/config/IQuestConfig"; +import { IQuestRewardValues } from "@spt/models/spt/repeatable/IQuestRewardValues"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { ItemFilterService } from "@spt/services/ItemFilterService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { MathUtil } from "@spt/utils/MathUtil"; +import { ObjectId } from "@spt/utils/ObjectId"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class RepeatableQuestRewardGenerator { protected logger: ILogger; protected randomUtil: RandomUtil; protected mathUtil: MathUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected itemHelper: ItemHelper; protected presetHelper: PresetHelper; protected handbookHelper: HandbookHelper; @@ -30,7 +31,7 @@ export declare class RepeatableQuestRewardGenerator { protected configServer: ConfigServer; protected cloner: ICloner; protected questConfig: IQuestConfig; - constructor(logger: ILogger, randomUtil: RandomUtil, mathUtil: MathUtil, databaseServer: DatabaseServer, itemHelper: ItemHelper, presetHelper: PresetHelper, handbookHelper: HandbookHelper, localisationService: LocalisationService, objectId: ObjectId, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, configServer: ConfigServer, cloner: ICloner); + constructor(logger: ILogger, randomUtil: RandomUtil, mathUtil: MathUtil, databaseService: DatabaseService, itemHelper: ItemHelper, presetHelper: PresetHelper, handbookHelper: HandbookHelper, localisationService: LocalisationService, objectId: ObjectId, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, configServer: ConfigServer, cloner: ICloner); /** * Generate the reward for a mission. A reward can consist of * - Experience @@ -52,6 +53,29 @@ export declare class RepeatableQuestRewardGenerator { * @returns {object} object of "Reward"-type that can be given for a repeatable mission */ generateReward(pmcLevel: number, difficulty: number, traderId: string, repeatableConfig: IRepeatableQuestConfig, questConfig: IBaseQuestConfig): IQuestRewards; + protected getQuestRewardValues(rewardScaling: IRewardScaling, difficulty: number, pmcLevel: number): IQuestRewardValues; + /** + * Get an array of items + stack size to give to player as reward that fit inside of a rouble budget + * @param itemPool All possible items to choose rewards from + * @param maxItemCount Total number of items to reward + * @param itemRewardBudget Rouble buget all item rewards must fit in + * @param repeatableConfig config for quest type + * @returns Items and stack size + */ + protected getRewardableItemsFromPoolWithinBudget(itemPool: ITemplateItem[], maxItemCount: number, itemRewardBudget: number, repeatableConfig: IRepeatableQuestConfig): { + item: ITemplateItem; + stackSize: number; + }[]; + /** + * Choose a random Weapon preset that fits inside of a rouble amount limit + * @param roublesBudget + * @param rewardIndex + * @returns IQuestReward + */ + protected getRandomWeaponPresetWithinBudget(roublesBudget: number, rewardIndex: number): { + weapon: IQuestReward; + price: number; + } | undefined; /** * @param rewardItems List of reward items to filter * @param roublesBudget The budget remaining for rewards @@ -62,21 +86,31 @@ export declare class RepeatableQuestRewardGenerator { /** * Get a randomised number a reward items stack size should be based on its handbook price * @param item Reward item to get stack size for - * @returns Stack size value + * @returns matching stack size for the passed in items price */ protected getRandomisedRewardItemStackSizeByPrice(item: ITemplateItem): number; /** * Should reward item have stack size increased (25% chance) - * @param item Item to possibly increase stack size of + * @param item Item to increase reward stack size of * @param maxRoublePriceToStack Maximum rouble price an item can be to still be chosen for stacking - * @returns True if it should + * @param randomChanceToPass Additional randomised chance of passing + * @returns True if items stack size can be increased + */ + protected canIncreaseRewardItemStackSize(item: ITemplateItem, maxRoublePriceToStack: number, randomChanceToPass?: number): boolean; + /** + * Get a count of cartridges that fits the rouble budget amount provided + * e.g. how many M80s for 50,000 roubles + * @param itemSelected Cartridge + * @param roublesBudget Rouble budget + * @param rewardNumItems + * @returns Count that fits budget (min 1) */ - protected canIncreaseRewardItemStackSize(item: ITemplateItem, maxRoublePriceToStack: number): boolean; protected calculateAmmoStackSizeThatFitsBudget(itemSelected: ITemplateItem, roublesBudget: number, rewardNumItems: number): number; /** * Select a number of items that have a colelctive value of the passed in parameter * @param repeatableConfig Config * @param roublesBudget Total value of items to return + * @param traderId Id of the trader who will give player reward * @returns Array of reward items that fit budget */ protected chooseRewardItemsWithinBudget(repeatableConfig: IRepeatableQuestConfig, roublesBudget: number, traderId: string): ITemplateItem[]; @@ -84,14 +118,30 @@ export declare class RepeatableQuestRewardGenerator { * Helper to create a reward item structured as required by the client * * @param {string} tpl ItemId of the rewarded item - * @param {integer} value Amount of items to give + * @param {integer} count Amount of items to give * @param {integer} index All rewards will be appended to a list, for unknown reasons the client wants the index + * @param preset Optional array of preset items * @returns {object} Object of "Reward"-item-type */ - protected generateRewardItem(tpl: string, value: number, index: number, preset?: Item[]): IQuestReward; + protected generateItemReward(tpl: string, count: number, index: number): IQuestReward; /** - * Picks rewardable items from items.json. This means they need to fit into the inventory and they shouldn't be keys (debatable) + * Helper to create a reward item structured as required by the client + * + * @param {string} tpl ItemId of the rewarded item + * @param {integer} count Amount of items to give + * @param {integer} index All rewards will be appended to a list, for unknown reasons the client wants the index + * @param preset Optional array of preset items + * @returns {object} Object of "Reward"-item-type + */ + protected generatePresetReward(tpl: string, count: number, index: number, preset?: Item[]): IQuestReward; + /** + * Picks rewardable items from items.json + * This means they must: + * - Fit into the inventory + * - Shouldn't be keys + * - Have a price greater than 0 * @param repeatableQuestConfig Config file + * @param traderId Id of trader who will give reward to player * @returns List of rewardable items [[_tpl, itemTemplate],...] */ getRewardableItems(repeatableQuestConfig: IRepeatableQuestConfig, traderId: string): [string, ITemplateItem][]; @@ -102,5 +152,5 @@ export declare class RepeatableQuestRewardGenerator { * @returns True if item is valid reward */ protected isValidRewardItem(tpl: string, repeatableQuestConfig: IRepeatableQuestConfig, itemBaseWhitelist: string[]): boolean; - protected addMoneyReward(traderId: string, rewards: IQuestRewards, rewardRoubles: number, rewardIndex: number): void; + protected getMoneyReward(traderId: string, rewardRoubles: number, rewardIndex: number): IQuestReward; } diff --git a/TypeScript/24WebSocket/types/generators/ScavCaseRewardGenerator.d.ts b/TypeScript/24WebSocket/types/generators/ScavCaseRewardGenerator.d.ts index aac0f05..45f2e51 100644 --- a/TypeScript/24WebSocket/types/generators/ScavCaseRewardGenerator.d.ts +++ b/TypeScript/24WebSocket/types/generators/ScavCaseRewardGenerator.d.ts @@ -1,18 +1,18 @@ -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PresetHelper } from "@spt-aki/helpers/PresetHelper"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { IHideoutScavCase } from "@spt-aki/models/eft/hideout/IHideoutScavCase"; -import { IScavCaseConfig } from "@spt-aki/models/spt/config/IScavCaseConfig"; -import { RewardCountAndPriceDetails, ScavCaseRewardCountsAndPrices } from "@spt-aki/models/spt/hideout/ScavCaseRewardCountsAndPrices"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { ItemFilterService } from "@spt-aki/services/ItemFilterService"; -import { RagfairPriceService } from "@spt-aki/services/RagfairPriceService"; -import { SeasonalEventService } from "@spt-aki/services/SeasonalEventService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { IHideoutScavCase } from "@spt/models/eft/hideout/IHideoutScavCase"; +import { IScavCaseConfig } from "@spt/models/spt/config/IScavCaseConfig"; +import { RewardCountAndPriceDetails, ScavCaseRewardCountsAndPrices } from "@spt/models/spt/hideout/ScavCaseRewardCountsAndPrices"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { ItemFilterService } from "@spt/services/ItemFilterService"; +import { RagfairPriceService } from "@spt/services/RagfairPriceService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; /** * Handle the creation of randomised scav case rewards */ @@ -22,7 +22,7 @@ export declare class ScavCaseRewardGenerator { protected hashUtil: HashUtil; protected itemHelper: ItemHelper; protected presetHelper: PresetHelper; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected ragfairPriceService: RagfairPriceService; protected seasonalEventService: SeasonalEventService; protected itemFilterService: ItemFilterService; @@ -30,7 +30,7 @@ export declare class ScavCaseRewardGenerator { protected scavCaseConfig: IScavCaseConfig; protected dbItemsCache: ITemplateItem[]; protected dbAmmoItemsCache: ITemplateItem[]; - constructor(logger: ILogger, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, databaseServer: DatabaseServer, ragfairPriceService: RagfairPriceService, seasonalEventService: SeasonalEventService, itemFilterService: ItemFilterService, configServer: ConfigServer); + constructor(logger: ILogger, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, seasonalEventService: SeasonalEventService, itemFilterService: ItemFilterService, configServer: ConfigServer); /** * Create an array of rewards that will be given to the player upon completing their scav case build * @param recipeId recipe of the scav case craft diff --git a/TypeScript/24WebSocket/types/generators/WeatherGenerator.d.ts b/TypeScript/24WebSocket/types/generators/WeatherGenerator.d.ts index 75cb541..c9ca02a 100644 --- a/TypeScript/24WebSocket/types/generators/WeatherGenerator.d.ts +++ b/TypeScript/24WebSocket/types/generators/WeatherGenerator.d.ts @@ -1,13 +1,13 @@ -import { ApplicationContext } from "@spt-aki/context/ApplicationContext"; -import { WeightedRandomHelper } from "@spt-aki/helpers/WeightedRandomHelper"; -import { IWeather, IWeatherData } from "@spt-aki/models/eft/weather/IWeatherData"; -import { WindDirection } from "@spt-aki/models/enums/WindDirection"; -import { IWeatherConfig } from "@spt-aki/models/spt/config/IWeatherConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { SeasonalEventService } from "@spt-aki/services/SeasonalEventService"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IWeather, IWeatherData } from "@spt/models/eft/weather/IWeatherData"; +import { WindDirection } from "@spt/models/enums/WindDirection"; +import { IWeatherConfig } from "@spt/models/spt/config/IWeatherConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class WeatherGenerator { protected weightedRandomHelper: WeightedRandomHelper; protected logger: ILogger; diff --git a/TypeScript/24WebSocket/types/generators/weapongen/IInventoryMagGen.d.ts b/TypeScript/24WebSocket/types/generators/weapongen/IInventoryMagGen.d.ts index 5586243..07bef8e 100644 --- a/TypeScript/24WebSocket/types/generators/weapongen/IInventoryMagGen.d.ts +++ b/TypeScript/24WebSocket/types/generators/weapongen/IInventoryMagGen.d.ts @@ -1,4 +1,4 @@ -import { InventoryMagGen } from "@spt-aki/generators/weapongen/InventoryMagGen"; +import { InventoryMagGen } from "@spt/generators/weapongen/InventoryMagGen"; export interface IInventoryMagGen { getPriority(): number; canHandleInventoryMagGen(inventoryMagGen: InventoryMagGen): boolean; diff --git a/TypeScript/24WebSocket/types/generators/weapongen/InventoryMagGen.d.ts b/TypeScript/24WebSocket/types/generators/weapongen/InventoryMagGen.d.ts index 778ac53..1db9915 100644 --- a/TypeScript/24WebSocket/types/generators/weapongen/InventoryMagGen.d.ts +++ b/TypeScript/24WebSocket/types/generators/weapongen/InventoryMagGen.d.ts @@ -1,6 +1,6 @@ -import { Inventory } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { GenerationData } from "@spt-aki/models/eft/common/tables/IBotType"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; +import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; +import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class InventoryMagGen { private magCounts; private magazineTemplate; diff --git a/TypeScript/24WebSocket/types/generators/weapongen/implementations/BarrelInventoryMagGen.d.ts b/TypeScript/24WebSocket/types/generators/weapongen/implementations/BarrelInventoryMagGen.d.ts index 3e5e708..caa4d13 100644 --- a/TypeScript/24WebSocket/types/generators/weapongen/implementations/BarrelInventoryMagGen.d.ts +++ b/TypeScript/24WebSocket/types/generators/weapongen/implementations/BarrelInventoryMagGen.d.ts @@ -1,7 +1,7 @@ -import { IInventoryMagGen } from "@spt-aki/generators/weapongen/IInventoryMagGen"; -import { InventoryMagGen } from "@spt-aki/generators/weapongen/InventoryMagGen"; -import { BotWeaponGeneratorHelper } from "@spt-aki/helpers/BotWeaponGeneratorHelper"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { IInventoryMagGen } from "@spt/generators/weapongen/IInventoryMagGen"; +import { InventoryMagGen } from "@spt/generators/weapongen/InventoryMagGen"; +import { BotWeaponGeneratorHelper } from "@spt/helpers/BotWeaponGeneratorHelper"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class BarrelInventoryMagGen implements IInventoryMagGen { protected randomUtil: RandomUtil; protected botWeaponGeneratorHelper: BotWeaponGeneratorHelper; diff --git a/TypeScript/24WebSocket/types/generators/weapongen/implementations/ExternalInventoryMagGen.d.ts b/TypeScript/24WebSocket/types/generators/weapongen/implementations/ExternalInventoryMagGen.d.ts index bc301a1..635332b 100644 --- a/TypeScript/24WebSocket/types/generators/weapongen/implementations/ExternalInventoryMagGen.d.ts +++ b/TypeScript/24WebSocket/types/generators/weapongen/implementations/ExternalInventoryMagGen.d.ts @@ -1,12 +1,12 @@ -import { IInventoryMagGen } from "@spt-aki/generators/weapongen/IInventoryMagGen"; -import { InventoryMagGen } from "@spt-aki/generators/weapongen/InventoryMagGen"; -import { BotGeneratorHelper } from "@spt-aki/helpers/BotGeneratorHelper"; -import { BotWeaponGeneratorHelper } from "@spt-aki/helpers/BotWeaponGeneratorHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { IInventoryMagGen } from "@spt/generators/weapongen/IInventoryMagGen"; +import { InventoryMagGen } from "@spt/generators/weapongen/InventoryMagGen"; +import { BotGeneratorHelper } from "@spt/helpers/BotGeneratorHelper"; +import { BotWeaponGeneratorHelper } from "@spt/helpers/BotWeaponGeneratorHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class ExternalInventoryMagGen implements IInventoryMagGen { protected logger: ILogger; protected itemHelper: ItemHelper; @@ -23,5 +23,5 @@ export declare class ExternalInventoryMagGen implements IInventoryMagGen { * @param weaponTpl Weapon to get mag for * @returns tpl of magazine */ - protected getRandomExternalMagazineForInternalMagazineGun(weaponTpl: string, magazineBlacklist: string[]): ITemplateItem; + protected getRandomExternalMagazineForInternalMagazineGun(weaponTpl: string, magazineBlacklist: string[]): ITemplateItem | undefined; } diff --git a/TypeScript/24WebSocket/types/generators/weapongen/implementations/InternalMagazineInventoryMagGen.d.ts b/TypeScript/24WebSocket/types/generators/weapongen/implementations/InternalMagazineInventoryMagGen.d.ts index 70efdb5..5ae7415 100644 --- a/TypeScript/24WebSocket/types/generators/weapongen/implementations/InternalMagazineInventoryMagGen.d.ts +++ b/TypeScript/24WebSocket/types/generators/weapongen/implementations/InternalMagazineInventoryMagGen.d.ts @@ -1,6 +1,6 @@ -import { IInventoryMagGen } from "@spt-aki/generators/weapongen/IInventoryMagGen"; -import { InventoryMagGen } from "@spt-aki/generators/weapongen/InventoryMagGen"; -import { BotWeaponGeneratorHelper } from "@spt-aki/helpers/BotWeaponGeneratorHelper"; +import { IInventoryMagGen } from "@spt/generators/weapongen/IInventoryMagGen"; +import { InventoryMagGen } from "@spt/generators/weapongen/InventoryMagGen"; +import { BotWeaponGeneratorHelper } from "@spt/helpers/BotWeaponGeneratorHelper"; export declare class InternalMagazineInventoryMagGen implements IInventoryMagGen { protected botWeaponGeneratorHelper: BotWeaponGeneratorHelper; constructor(botWeaponGeneratorHelper: BotWeaponGeneratorHelper); diff --git a/TypeScript/24WebSocket/types/generators/weapongen/implementations/UbglExternalMagGen.d.ts b/TypeScript/24WebSocket/types/generators/weapongen/implementations/UbglExternalMagGen.d.ts index 02b7748..69d0c49 100644 --- a/TypeScript/24WebSocket/types/generators/weapongen/implementations/UbglExternalMagGen.d.ts +++ b/TypeScript/24WebSocket/types/generators/weapongen/implementations/UbglExternalMagGen.d.ts @@ -1,6 +1,6 @@ -import { IInventoryMagGen } from "@spt-aki/generators/weapongen/IInventoryMagGen"; -import { InventoryMagGen } from "@spt-aki/generators/weapongen/InventoryMagGen"; -import { BotWeaponGeneratorHelper } from "@spt-aki/helpers/BotWeaponGeneratorHelper"; +import { IInventoryMagGen } from "@spt/generators/weapongen/IInventoryMagGen"; +import { InventoryMagGen } from "@spt/generators/weapongen/InventoryMagGen"; +import { BotWeaponGeneratorHelper } from "@spt/helpers/BotWeaponGeneratorHelper"; export declare class UbglExternalMagGen implements IInventoryMagGen { protected botWeaponGeneratorHelper: BotWeaponGeneratorHelper; constructor(botWeaponGeneratorHelper: BotWeaponGeneratorHelper); diff --git a/TypeScript/24WebSocket/types/helpers/AssortHelper.d.ts b/TypeScript/24WebSocket/types/helpers/AssortHelper.d.ts index 2ed2174..72d1600 100644 --- a/TypeScript/24WebSocket/types/helpers/AssortHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/AssortHelper.d.ts @@ -1,11 +1,11 @@ -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { QuestHelper } from "@spt-aki/helpers/QuestHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { ITraderAssort } from "@spt-aki/models/eft/common/tables/ITrader"; -import { QuestStatus } from "@spt-aki/models/enums/QuestStatus"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { QuestHelper } from "@spt/helpers/QuestHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { ITraderAssort } from "@spt/models/eft/common/tables/ITrader"; +import { QuestStatus } from "@spt/models/enums/QuestStatus"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; export declare class AssortHelper { protected logger: ILogger; protected itemHelper: ItemHelper; diff --git a/TypeScript/24WebSocket/types/helpers/BotDifficultyHelper.d.ts b/TypeScript/24WebSocket/types/helpers/BotDifficultyHelper.d.ts index 07c236e..63572a5 100644 --- a/TypeScript/24WebSocket/types/helpers/BotDifficultyHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/BotDifficultyHelper.d.ts @@ -1,23 +1,44 @@ -import { BotHelper } from "@spt-aki/helpers/BotHelper"; -import { Difficulty } from "@spt-aki/models/eft/common/tables/IBotType"; -import { IPmcConfig } from "@spt-aki/models/spt/config/IPmcConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { BotHelper } from "@spt/helpers/BotHelper"; +import { Difficulty } from "@spt/models/eft/common/tables/IBotType"; +import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class BotDifficultyHelper { protected logger: ILogger; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected randomUtil: RandomUtil; protected localisationService: LocalisationService; protected botHelper: BotHelper; protected configServer: ConfigServer; protected cloner: ICloner; protected pmcConfig: IPmcConfig; - constructor(logger: ILogger, databaseServer: DatabaseServer, randomUtil: RandomUtil, localisationService: LocalisationService, botHelper: BotHelper, configServer: ConfigServer, cloner: ICloner); + constructor(logger: ILogger, databaseService: DatabaseService, randomUtil: RandomUtil, localisationService: LocalisationService, botHelper: BotHelper, configServer: ConfigServer, cloner: ICloner); + /** + * Get a difficulty object modified to handle fighting other PMCs + * @param pmcType 'bear or 'usec' + * @param difficulty easy / normal / hard / impossible + * @param usecType pmcUSEC + * @param bearType pmcBEAR + * @returns Difficulty object + */ getPmcDifficultySettings(pmcType: "bear" | "usec", difficulty: string, usecType: string, bearType: string): Difficulty; + /** + * Add bot types to ENEMY_BOT_TYPES array + * @param difficultySettings Bot settings to alter + * @param typesToAdd Bot types to add to enemy list + * @param typeBeingEdited Bot type to ignore and not add to enemy list + */ + protected addBotToEnemyList(difficultySettings: Difficulty, typesToAdd: string[], typeBeingEdited?: string): void; + /** + * Configure difficulty settings to be hostile to USEC and BEAR + * Look up value in bot.json/chanceSameSideIsHostilePercent + * @param difficultySettings pmc difficulty settings + */ + protected setDifficultyToHostileToBearAndUsec(difficultySettings: Difficulty): void; /** * Get difficulty settings for desired bot type, if not found use assault bot types * @param type bot type to retrieve difficulty of diff --git a/TypeScript/24WebSocket/types/helpers/BotGeneratorHelper.d.ts b/TypeScript/24WebSocket/types/helpers/BotGeneratorHelper.d.ts index c756725..00ae8ae 100644 --- a/TypeScript/24WebSocket/types/helpers/BotGeneratorHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/BotGeneratorHelper.d.ts @@ -1,24 +1,24 @@ -import { ApplicationContext } from "@spt-aki/context/ApplicationContext"; -import { ContainerHelper } from "@spt-aki/helpers/ContainerHelper"; -import { DurabilityLimitsHelper } from "@spt-aki/helpers/DurabilityLimitsHelper"; -import { InventoryHelper } from "@spt-aki/helpers/InventoryHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { Inventory } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { Item, Repairable, Upd } from "@spt-aki/models/eft/common/tables/IItem"; -import { Grid, ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { ItemAddedResult } from "@spt-aki/models/enums/ItemAddedResult"; -import { IChooseRandomCompatibleModResult } from "@spt-aki/models/spt/bots/IChooseRandomCompatibleModResult"; -import { EquipmentFilters, IBotConfig, IRandomisedResourceValues } from "@spt-aki/models/spt/config/IBotConfig"; -import { IPmcConfig } from "@spt-aki/models/spt/config/IPmcConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { ContainerHelper } from "@spt/helpers/ContainerHelper"; +import { DurabilityLimitsHelper } from "@spt/helpers/DurabilityLimitsHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; +import { Item, Repairable, Upd } from "@spt/models/eft/common/tables/IItem"; +import { Grid, ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { ItemAddedResult } from "@spt/models/enums/ItemAddedResult"; +import { IChooseRandomCompatibleModResult } from "@spt/models/spt/bots/IChooseRandomCompatibleModResult"; +import { EquipmentFilters, IBotConfig, IRandomisedResourceValues } from "@spt/models/spt/config/IBotConfig"; +import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class BotGeneratorHelper { protected logger: ILogger; protected randomUtil: RandomUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected durabilityLimitsHelper: DurabilityLimitsHelper; protected itemHelper: ItemHelper; protected inventoryHelper: InventoryHelper; @@ -28,7 +28,7 @@ export declare class BotGeneratorHelper { protected configServer: ConfigServer; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - constructor(logger: ILogger, randomUtil: RandomUtil, databaseServer: DatabaseServer, durabilityLimitsHelper: DurabilityLimitsHelper, itemHelper: ItemHelper, inventoryHelper: InventoryHelper, containerHelper: ContainerHelper, applicationContext: ApplicationContext, localisationService: LocalisationService, configServer: ConfigServer); + constructor(logger: ILogger, randomUtil: RandomUtil, databaseService: DatabaseService, durabilityLimitsHelper: DurabilityLimitsHelper, itemHelper: ItemHelper, inventoryHelper: InventoryHelper, containerHelper: ContainerHelper, applicationContext: ApplicationContext, localisationService: LocalisationService, configServer: ConfigServer); /** * Adds properties to an item * e.g. Repairable / HasHinge / Foldable / MaxDurability @@ -50,24 +50,24 @@ export declare class BotGeneratorHelper { * Get the chance for the weapon attachment or helmet equipment to be set as activated * @param botRole role of bot with weapon/helmet * @param setting the setting of the weapon attachment/helmet equipment to be activated - * @param defaultValue default value for the chance of activation if the botrole or bot equipment role is null + * @param defaultValue default value for the chance of activation if the botrole or bot equipment role is undefined * @returns Percent chance to be active */ - protected getBotEquipmentSettingFromConfig(botRole: string, setting: keyof EquipmentFilters, defaultValue: number): number; + protected getBotEquipmentSettingFromConfig(botRole: string | undefined, setting: keyof EquipmentFilters, defaultValue: number): number; /** * Create a repairable object for a weapon that containers durability + max durability properties * @param itemTemplate weapon object being generated for * @param botRole type of bot being generated for * @returns Repairable object */ - protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole: string): Repairable; + protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): Repairable; /** * Create a repairable object for an armor that containers durability + max durability properties * @param itemTemplate weapon object being generated for * @param botRole type of bot being generated for * @returns Repairable object */ - protected generateArmorRepairableProperties(itemTemplate: ITemplateItem, botRole: string): Repairable; + protected generateArmorRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): Repairable; isWeaponModIncompatibleWithCurrentMods(itemsEquipped: Item[], tplToCheck: string, modSlot: string): IChooseRandomCompatibleModResult; /** * Can item be added to another item without conflict diff --git a/TypeScript/24WebSocket/types/helpers/BotHelper.d.ts b/TypeScript/24WebSocket/types/helpers/BotHelper.d.ts index eafb081..c5871ae 100644 --- a/TypeScript/24WebSocket/types/helpers/BotHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/BotHelper.d.ts @@ -1,33 +1,25 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; -import { Difficulty, IBotType } from "@spt-aki/models/eft/common/tables/IBotType"; -import { EquipmentFilters, IBotConfig, RandomisationDetails } from "@spt-aki/models/spt/config/IBotConfig"; -import { IPmcConfig } from "@spt-aki/models/spt/config/IPmcConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { MinMax } from "@spt/models/common/MinMax"; +import { Difficulty, IBotType } from "@spt/models/eft/common/tables/IBotType"; +import { EquipmentFilters, IBotConfig, RandomisationDetails } from "@spt/models/spt/config/IBotConfig"; +import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class BotHelper { protected logger: ILogger; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected randomUtil: RandomUtil; - protected localisationService: LocalisationService; protected configServer: ConfigServer; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - constructor(logger: ILogger, databaseServer: DatabaseServer, randomUtil: RandomUtil, localisationService: LocalisationService, configServer: ConfigServer); + constructor(logger: ILogger, databaseService: DatabaseService, randomUtil: RandomUtil, configServer: ConfigServer); /** * Get a template object for the specified botRole from bots.types db * @param role botRole to get template for * @returns IBotType object */ getBotTemplate(role: string): IBotType; - /** - * Randomize the chance the PMC will attack their own side - * Look up value in bot.json/chanceSameSideIsHostilePercent - * @param difficultySettings pmc difficulty settings - */ - randomizePmcHostility(difficultySettings: Difficulty): void; /** * Is the passed in bot role a PMC (usec/bear/pmc) * @param botRole bot role to check @@ -42,12 +34,6 @@ export declare class BotHelper { * @param typeToAdd bot type to add to friendly list */ addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void; - /** - * Add a bot to the ENEMY_BOT_TYPES array, do not add itself if its on the enemy list - * @param difficultySettings bot settings to alter - * @param typesToAdd bot type to add to enemy list - */ - addBotToEnemyList(difficultySettings: Difficulty, typesToAdd: string[], typeBeingEdited: string): void; /** * Add a bot to the REVENGE_BOT_TYPES array * @param difficultySettings bot settings to alter @@ -61,6 +47,11 @@ export declare class BotHelper { */ shouldBotBePmc(botRole: string): boolean; rollChanceToBePmc(role: string, botConvertMinMax: MinMax): boolean; + /** + * is the provided role a PMC, case-agnostic + * @param botRole Role to check + * @returns True if role is PMC + */ botRoleIsPmc(botRole: string): boolean; /** * Get randomization settings for bot from config/bot.json @@ -68,14 +59,14 @@ export declare class BotHelper { * @param botEquipConfig bot equipment json * @returns RandomisationDetails */ - getBotRandomizationDetails(botLevel: number, botEquipConfig: EquipmentFilters): RandomisationDetails; + getBotRandomizationDetails(botLevel: number, botEquipConfig: EquipmentFilters): RandomisationDetails | undefined; /** - * Choose between sptBear and sptUsec at random based on the % defined in pmcConfig.isUsec + * Choose between pmcBEAR and pmcUSEC at random based on the % defined in pmcConfig.isUsec * @returns pmc role */ getRandomizedPmcRole(): string; /** - * Get the corresponding side when sptBear or sptUsec is passed in + * Get the corresponding side when pmcBEAR or pmcUSEC is passed in * @param botRole role to get side for * @returns side (usec/bear) */ @@ -85,4 +76,5 @@ export declare class BotHelper { * @returns pmc side as string */ protected getRandomizedPmcSide(): string; + getPmcNicknameOfMaxLength(userId: string, maxLength: number): string; } diff --git a/TypeScript/24WebSocket/types/helpers/BotWeaponGeneratorHelper.d.ts b/TypeScript/24WebSocket/types/helpers/BotWeaponGeneratorHelper.d.ts index e38bebc..5ab4e59 100644 --- a/TypeScript/24WebSocket/types/helpers/BotWeaponGeneratorHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/BotWeaponGeneratorHelper.d.ts @@ -1,16 +1,16 @@ -import { BotGeneratorHelper } from "@spt-aki/helpers/BotGeneratorHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { WeightedRandomHelper } from "@spt-aki/helpers/WeightedRandomHelper"; -import { Inventory } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { GenerationData } from "@spt-aki/models/eft/common/tables/IBotType"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { EquipmentSlots } from "@spt-aki/models/enums/EquipmentSlots"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { BotGeneratorHelper } from "@spt/helpers/BotGeneratorHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; +import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { EquipmentSlots } from "@spt/models/enums/EquipmentSlots"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class BotWeaponGeneratorHelper { protected logger: ILogger; protected databaseServer: DatabaseServer; diff --git a/TypeScript/24WebSocket/types/helpers/ContainerHelper.d.ts b/TypeScript/24WebSocket/types/helpers/ContainerHelper.d.ts index 37aef05..730f20f 100644 --- a/TypeScript/24WebSocket/types/helpers/ContainerHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/ContainerHelper.d.ts @@ -1,9 +1,9 @@ export declare class FindSlotResult { success: boolean; - x: any; - y: any; + x?: number; + y?: number; rotation: boolean; - constructor(success?: boolean, x?: any, y?: any, rotation?: boolean); + constructor(success?: boolean, x?: number, y?: number, rotation?: boolean); } export declare class ContainerHelper { /** diff --git a/TypeScript/24WebSocket/types/helpers/Dialogue/AbstractDialogueChatBot.d.ts b/TypeScript/24WebSocket/types/helpers/Dialogue/AbstractDialogueChatBot.d.ts index b9bc597..26bc935 100644 --- a/TypeScript/24WebSocket/types/helpers/Dialogue/AbstractDialogueChatBot.d.ts +++ b/TypeScript/24WebSocket/types/helpers/Dialogue/AbstractDialogueChatBot.d.ts @@ -1,19 +1,15 @@ -import { IChatCommand, ICommandoCommand } from "@spt-aki/helpers/Dialogue/Commando/IChatCommand"; -import { IDialogueChatBot } from "@spt-aki/helpers/Dialogue/IDialogueChatBot"; -import { ISendMessageRequest } from "@spt-aki/models/eft/dialog/ISendMessageRequest"; -import { IUserDialogInfo } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { MailSendService } from "@spt-aki/services/MailSendService"; +import { IChatCommand } from "@spt/helpers/Dialogue/Commando/IChatCommand"; +import { IDialogueChatBot } from "@spt/helpers/Dialogue/IDialogueChatBot"; +import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; +import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { MailSendService } from "@spt/services/MailSendService"; export declare abstract class AbstractDialogueChatBot implements IDialogueChatBot { protected logger: ILogger; protected mailSendService: MailSendService; - protected chatCommands: IChatCommand[] | ICommandoCommand[]; - constructor(logger: ILogger, mailSendService: MailSendService, chatCommands: IChatCommand[] | ICommandoCommand[]); - /** - * @deprecated As of v3.7.6. Use registerChatCommand. - */ - registerCommandoCommand(chatCommand: IChatCommand | ICommandoCommand): void; - registerChatCommand(chatCommand: IChatCommand | ICommandoCommand): void; + protected chatCommands: IChatCommand[]; + constructor(logger: ILogger, mailSendService: MailSendService, chatCommands: IChatCommand[]); + registerChatCommand(chatCommand: IChatCommand): void; abstract getChatBot(): IUserDialogInfo; protected abstract getUnrecognizedCommandMessage(): string; handleMessage(sessionId: string, request: ISendMessageRequest): string; diff --git a/TypeScript/24WebSocket/types/helpers/Dialogue/Commando/IChatCommand.d.ts b/TypeScript/24WebSocket/types/helpers/Dialogue/Commando/IChatCommand.d.ts index ade0adc..dd53977 100644 --- a/TypeScript/24WebSocket/types/helpers/Dialogue/Commando/IChatCommand.d.ts +++ b/TypeScript/24WebSocket/types/helpers/Dialogue/Commando/IChatCommand.d.ts @@ -1,9 +1,5 @@ -import { ISendMessageRequest } from "@spt-aki/models/eft/dialog/ISendMessageRequest"; -import { IUserDialogInfo } from "@spt-aki/models/eft/profile/IAkiProfile"; -/** - * @deprecated As of v3.7.6. Use IChatCommand. Will be removed in v3.9.0. - */ -export type ICommandoCommand = IChatCommand; +import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; +import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; export interface IChatCommand { getCommandPrefix(): string; getCommandHelp(command: string): string; diff --git a/TypeScript/24WebSocket/types/helpers/Dialogue/Commando/SptCommandoCommands.d.ts b/TypeScript/24WebSocket/types/helpers/Dialogue/Commando/SptCommandoCommands.d.ts index 8626984..ab02e4f 100644 --- a/TypeScript/24WebSocket/types/helpers/Dialogue/Commando/SptCommandoCommands.d.ts +++ b/TypeScript/24WebSocket/types/helpers/Dialogue/Commando/SptCommandoCommands.d.ts @@ -1,12 +1,14 @@ -import { IChatCommand } from "@spt-aki/helpers/Dialogue/Commando/IChatCommand"; -import { ISptCommand } from "@spt-aki/helpers/Dialogue/Commando/SptCommands/ISptCommand"; -import { ISendMessageRequest } from "@spt-aki/models/eft/dialog/ISendMessageRequest"; -import { IUserDialogInfo } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; +import { IChatCommand } from "@spt/helpers/Dialogue/Commando/IChatCommand"; +import { ISptCommand } from "@spt/helpers/Dialogue/Commando/SptCommands/ISptCommand"; +import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; +import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; export declare class SptCommandoCommands implements IChatCommand { protected configServer: ConfigServer; + protected localisationService: LocalisationService; protected sptCommands: ISptCommand[]; - constructor(configServer: ConfigServer, sptCommands: ISptCommand[]); + constructor(configServer: ConfigServer, localisationService: LocalisationService, sptCommands: ISptCommand[]); registerSptCommandoCommand(command: ISptCommand): void; getCommandHelp(command: string): string; getCommandPrefix(): string; diff --git a/TypeScript/24WebSocket/types/helpers/Dialogue/Commando/SptCommands/GiveCommand/GiveSptCommand.d.ts b/TypeScript/24WebSocket/types/helpers/Dialogue/Commando/SptCommands/GiveCommand/GiveSptCommand.d.ts index ea765b1..c51bf7e 100644 --- a/TypeScript/24WebSocket/types/helpers/Dialogue/Commando/SptCommands/GiveCommand/GiveSptCommand.d.ts +++ b/TypeScript/24WebSocket/types/helpers/Dialogue/Commando/SptCommands/GiveCommand/GiveSptCommand.d.ts @@ -1,17 +1,17 @@ -import { SavedCommand } from "@spt-aki/helpers/Dialogue/Commando/SptCommands/GiveCommand/SavedCommand"; -import { ISptCommand } from "@spt-aki/helpers/Dialogue/Commando/SptCommands/ISptCommand"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PresetHelper } from "@spt-aki/helpers/PresetHelper"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { ISendMessageRequest } from "@spt-aki/models/eft/dialog/ISendMessageRequest"; -import { IUserDialogInfo } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { ItemFilterService } from "@spt-aki/services/ItemFilterService"; -import { LocaleService } from "@spt-aki/services/LocaleService"; -import { MailSendService } from "@spt-aki/services/MailSendService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; +import { SavedCommand } from "@spt/helpers/Dialogue/Commando/SptCommands/GiveCommand/SavedCommand"; +import { ISptCommand } from "@spt/helpers/Dialogue/Commando/SptCommands/ISptCommand"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; +import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { ItemFilterService } from "@spt/services/ItemFilterService"; +import { LocaleService } from "@spt/services/LocaleService"; +import { MailSendService } from "@spt/services/MailSendService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; export declare class GiveSptCommand implements ISptCommand { protected logger: ILogger; protected itemHelper: ItemHelper; @@ -19,7 +19,7 @@ export declare class GiveSptCommand implements ISptCommand { protected presetHelper: PresetHelper; protected mailSendService: MailSendService; protected localeService: LocaleService; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected itemFilterService: ItemFilterService; protected cloner: ICloner; /** @@ -34,7 +34,7 @@ export declare class GiveSptCommand implements ISptCommand { private static acceptableConfidence; private static excludedPresetItems; protected savedCommand: Map; - constructor(logger: ILogger, itemHelper: ItemHelper, hashUtil: HashUtil, presetHelper: PresetHelper, mailSendService: MailSendService, localeService: LocaleService, databaseServer: DatabaseServer, itemFilterService: ItemFilterService, cloner: ICloner); + constructor(logger: ILogger, itemHelper: ItemHelper, hashUtil: HashUtil, presetHelper: PresetHelper, mailSendService: MailSendService, localeService: LocaleService, databaseService: DatabaseService, itemFilterService: ItemFilterService, cloner: ICloner); getCommand(): string; getCommandHelp(): string; performAction(commandHandler: IUserDialogInfo, sessionId: string, request: ISendMessageRequest): string; diff --git a/TypeScript/24WebSocket/types/helpers/Dialogue/Commando/SptCommands/ISptCommand.d.ts b/TypeScript/24WebSocket/types/helpers/Dialogue/Commando/SptCommands/ISptCommand.d.ts index 33732c7..3c55b8e 100644 --- a/TypeScript/24WebSocket/types/helpers/Dialogue/Commando/SptCommands/ISptCommand.d.ts +++ b/TypeScript/24WebSocket/types/helpers/Dialogue/Commando/SptCommands/ISptCommand.d.ts @@ -1,5 +1,5 @@ -import { ISendMessageRequest } from "@spt-aki/models/eft/dialog/ISendMessageRequest"; -import { IUserDialogInfo } from "@spt-aki/models/eft/profile/IAkiProfile"; +import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; +import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; export interface ISptCommand { getCommand(): string; getCommandHelp(): string; diff --git a/TypeScript/24WebSocket/types/helpers/Dialogue/Commando/SptCommands/ProfileCommand/ProfileSptCommand.d.ts b/TypeScript/24WebSocket/types/helpers/Dialogue/Commando/SptCommands/ProfileCommand/ProfileSptCommand.d.ts index 191af11..7d3547a 100644 --- a/TypeScript/24WebSocket/types/helpers/Dialogue/Commando/SptCommands/ProfileCommand/ProfileSptCommand.d.ts +++ b/TypeScript/24WebSocket/types/helpers/Dialogue/Commando/SptCommands/ProfileCommand/ProfileSptCommand.d.ts @@ -1,16 +1,16 @@ -import { SavedCommand } from "@spt-aki/helpers/Dialogue/Commando/SptCommands/GiveCommand/SavedCommand"; -import { ISptCommand } from "@spt-aki/helpers/Dialogue/Commando/SptCommands/ISptCommand"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PresetHelper } from "@spt-aki/helpers/PresetHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { ISendMessageRequest } from "@spt-aki/models/eft/dialog/ISendMessageRequest"; -import { IUserDialogInfo } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { IProfileChangeEvent } from "@spt-aki/models/spt/dialog/ISendMessageDetails"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocaleService } from "@spt-aki/services/LocaleService"; -import { MailSendService } from "@spt-aki/services/MailSendService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; +import { SavedCommand } from "@spt/helpers/Dialogue/Commando/SptCommands/GiveCommand/SavedCommand"; +import { ISptCommand } from "@spt/helpers/Dialogue/Commando/SptCommands/ISptCommand"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; +import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; +import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { LocaleService } from "@spt/services/LocaleService"; +import { MailSendService } from "@spt/services/MailSendService"; +import { HashUtil } from "@spt/utils/HashUtil"; export declare class ProfileSptCommand implements ISptCommand { protected logger: ILogger; protected itemHelper: ItemHelper; diff --git a/TypeScript/24WebSocket/types/helpers/Dialogue/Commando/SptCommands/TraderCommand/TraderSptCommand.d.ts b/TypeScript/24WebSocket/types/helpers/Dialogue/Commando/SptCommands/TraderCommand/TraderSptCommand.d.ts index 7c05112..247f908 100644 --- a/TypeScript/24WebSocket/types/helpers/Dialogue/Commando/SptCommands/TraderCommand/TraderSptCommand.d.ts +++ b/TypeScript/24WebSocket/types/helpers/Dialogue/Commando/SptCommands/TraderCommand/TraderSptCommand.d.ts @@ -1,14 +1,14 @@ -import { SavedCommand } from "@spt-aki/helpers/Dialogue/Commando/SptCommands/GiveCommand/SavedCommand"; -import { ISptCommand } from "@spt-aki/helpers/Dialogue/Commando/SptCommands/ISptCommand"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PresetHelper } from "@spt-aki/helpers/PresetHelper"; -import { ISendMessageRequest } from "@spt-aki/models/eft/dialog/ISendMessageRequest"; -import { IUserDialogInfo } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocaleService } from "@spt-aki/services/LocaleService"; -import { MailSendService } from "@spt-aki/services/MailSendService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; +import { SavedCommand } from "@spt/helpers/Dialogue/Commando/SptCommands/GiveCommand/SavedCommand"; +import { ISptCommand } from "@spt/helpers/Dialogue/Commando/SptCommands/ISptCommand"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; +import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocaleService } from "@spt/services/LocaleService"; +import { MailSendService } from "@spt/services/MailSendService"; +import { HashUtil } from "@spt/utils/HashUtil"; export declare class TraderSptCommand implements ISptCommand { protected logger: ILogger; protected itemHelper: ItemHelper; @@ -16,7 +16,7 @@ export declare class TraderSptCommand implements ISptCommand { protected presetHelper: PresetHelper; protected mailSendService: MailSendService; protected localeService: LocaleService; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; /** * Regex to account for all these cases: * spt trader prapor rep 100 @@ -24,7 +24,7 @@ export declare class TraderSptCommand implements ISptCommand { */ private static commandRegex; protected savedCommand: SavedCommand; - constructor(logger: ILogger, itemHelper: ItemHelper, hashUtil: HashUtil, presetHelper: PresetHelper, mailSendService: MailSendService, localeService: LocaleService, databaseServer: DatabaseServer); + constructor(logger: ILogger, itemHelper: ItemHelper, hashUtil: HashUtil, presetHelper: PresetHelper, mailSendService: MailSendService, localeService: LocaleService, databaseService: DatabaseService); getCommand(): string; getCommandHelp(): string; performAction(commandHandler: IUserDialogInfo, sessionId: string, request: ISendMessageRequest): string; diff --git a/TypeScript/24WebSocket/types/helpers/Dialogue/CommandoDialogueChatBot.d.ts b/TypeScript/24WebSocket/types/helpers/Dialogue/CommandoDialogueChatBot.d.ts index 34c3a79..a87bec1 100644 --- a/TypeScript/24WebSocket/types/helpers/Dialogue/CommandoDialogueChatBot.d.ts +++ b/TypeScript/24WebSocket/types/helpers/Dialogue/CommandoDialogueChatBot.d.ts @@ -1,8 +1,8 @@ -import { AbstractDialogueChatBot } from "@spt-aki/helpers/Dialogue/AbstractDialogueChatBot"; -import { IChatCommand } from "@spt-aki/helpers/Dialogue/Commando/IChatCommand"; -import { IUserDialogInfo } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { MailSendService } from "@spt-aki/services/MailSendService"; +import { AbstractDialogueChatBot } from "@spt/helpers/Dialogue/AbstractDialogueChatBot"; +import { IChatCommand } from "@spt/helpers/Dialogue/Commando/IChatCommand"; +import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { MailSendService } from "@spt/services/MailSendService"; export declare class CommandoDialogueChatBot extends AbstractDialogueChatBot { constructor(logger: ILogger, mailSendService: MailSendService, chatCommands: IChatCommand[]); getChatBot(): IUserDialogInfo; diff --git a/TypeScript/24WebSocket/types/helpers/Dialogue/IDialogueChatBot.d.ts b/TypeScript/24WebSocket/types/helpers/Dialogue/IDialogueChatBot.d.ts index b585d55..0c72041 100644 --- a/TypeScript/24WebSocket/types/helpers/Dialogue/IDialogueChatBot.d.ts +++ b/TypeScript/24WebSocket/types/helpers/Dialogue/IDialogueChatBot.d.ts @@ -1,5 +1,5 @@ -import { ISendMessageRequest } from "@spt-aki/models/eft/dialog/ISendMessageRequest"; -import { IUserDialogInfo } from "@spt-aki/models/eft/profile/IAkiProfile"; +import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; +import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; export interface IDialogueChatBot { getChatBot(): IUserDialogInfo; handleMessage(sessionId: string, request: ISendMessageRequest): string; diff --git a/TypeScript/24WebSocket/types/helpers/Dialogue/SptDialogueChatBot.d.ts b/TypeScript/24WebSocket/types/helpers/Dialogue/SptDialogueChatBot.d.ts index f858ab8..8d3aa97 100644 --- a/TypeScript/24WebSocket/types/helpers/Dialogue/SptDialogueChatBot.d.ts +++ b/TypeScript/24WebSocket/types/helpers/Dialogue/SptDialogueChatBot.d.ts @@ -1,13 +1,13 @@ -import { IDialogueChatBot } from "@spt-aki/helpers/Dialogue/IDialogueChatBot"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { ISendMessageRequest } from "@spt-aki/models/eft/dialog/ISendMessageRequest"; -import { IUserDialogInfo } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { ICoreConfig } from "@spt-aki/models/spt/config/ICoreConfig"; -import { IWeatherConfig } from "@spt-aki/models/spt/config/IWeatherConfig"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { GiftService } from "@spt-aki/services/GiftService"; -import { MailSendService } from "@spt-aki/services/MailSendService"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { IDialogueChatBot } from "@spt/helpers/Dialogue/IDialogueChatBot"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; +import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; +import { ICoreConfig } from "@spt/models/spt/config/ICoreConfig"; +import { IWeatherConfig } from "@spt/models/spt/config/IWeatherConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { GiftService } from "@spt/services/GiftService"; +import { MailSendService } from "@spt/services/MailSendService"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class SptDialogueChatBot implements IDialogueChatBot { protected profileHelper: ProfileHelper; protected randomUtil: RandomUtil; diff --git a/TypeScript/24WebSocket/types/helpers/DialogueHelper.d.ts b/TypeScript/24WebSocket/types/helpers/DialogueHelper.d.ts index 2ad4536..febe696 100644 --- a/TypeScript/24WebSocket/types/helpers/DialogueHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/DialogueHelper.d.ts @@ -1,13 +1,13 @@ -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { NotificationSendHelper } from "@spt-aki/helpers/NotificationSendHelper"; -import { NotifierHelper } from "@spt-aki/helpers/NotifierHelper"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { Dialogue, MessagePreview } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { NotificationSendHelper } from "@spt/helpers/NotificationSendHelper"; +import { NotifierHelper } from "@spt/helpers/NotifierHelper"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { Dialogue, MessagePreview } from "@spt/models/eft/profile/ISptProfile"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { HashUtil } from "@spt/utils/HashUtil"; export declare class DialogueHelper { protected logger: ILogger; protected hashUtil: HashUtil; diff --git a/TypeScript/24WebSocket/types/helpers/DurabilityLimitsHelper.d.ts b/TypeScript/24WebSocket/types/helpers/DurabilityLimitsHelper.d.ts index efccdf5..e3b4086 100644 --- a/TypeScript/24WebSocket/types/helpers/DurabilityLimitsHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/DurabilityLimitsHelper.d.ts @@ -1,8 +1,8 @@ -import { BotHelper } from "@spt-aki/helpers/BotHelper"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { IBotConfig } from "@spt-aki/models/spt/config/IBotConfig"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { BotHelper } from "@spt/helpers/BotHelper"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class DurabilityLimitsHelper { protected randomUtil: RandomUtil; protected botHelper: BotHelper; @@ -15,14 +15,14 @@ export declare class DurabilityLimitsHelper { * @param botRole Role of bot to get max durability for * @returns Max durability of weapon */ - getRandomizedMaxWeaponDurability(itemTemplate: ITemplateItem, botRole: string): number; + getRandomizedMaxWeaponDurability(itemTemplate: ITemplateItem, botRole?: string): number; /** * Get max durability value for armor based on bot role * @param itemTemplate Item to get max durability for * @param botRole Role of bot to get max durability for * @returns max durability */ - getRandomizedMaxArmorDurability(itemTemplate: ITemplateItem, botRole: string): number; + getRandomizedMaxArmorDurability(itemTemplate: ITemplateItem, botRole?: string): number; /** * Get randomised current weapon durability by bot role * @param itemTemplate Unused - Item to get current durability of @@ -30,7 +30,7 @@ export declare class DurabilityLimitsHelper { * @param maxDurability Max durability of weapon * @returns Current weapon durability */ - getRandomizedWeaponDurability(itemTemplate: ITemplateItem, botRole: string, maxDurability: number): number; + getRandomizedWeaponDurability(itemTemplate: ITemplateItem, botRole: string | undefined, maxDurability: number): number; /** * Get randomised current armor durability by bot role * @param itemTemplate Unused - Item to get current durability of @@ -38,17 +38,17 @@ export declare class DurabilityLimitsHelper { * @param maxDurability Max durability of armor * @returns Current armor durability */ - getRandomizedArmorDurability(itemTemplate: ITemplateItem, botRole: string, maxDurability: number): number; - protected generateMaxWeaponDurability(botRole: string): number; + getRandomizedArmorDurability(itemTemplate: ITemplateItem, botRole: string | undefined, maxDurability: number): number; + protected generateMaxWeaponDurability(botRole?: string): number; protected generateMaxPmcArmorDurability(itemMaxDurability: number): number; - protected getLowestMaxWeaponFromConfig(botRole: string): number; - protected getHighestMaxWeaponDurabilityFromConfig(botRole: string): number; - protected generateWeaponDurability(botRole: string, maxDurability: number): number; - protected generateArmorDurability(botRole: string, maxDurability: number): number; - protected getMinWeaponDeltaFromConfig(botRole: string): number; - protected getMaxWeaponDeltaFromConfig(botRole: string): number; - protected getMinArmorDeltaFromConfig(botRole: string): number; - protected getMaxArmorDeltaFromConfig(botRole: string): number; - protected getMinArmorLimitPercentFromConfig(botRole: string): number; - protected getMinWeaponLimitPercentFromConfig(botRole: string): number; + protected getLowestMaxWeaponFromConfig(botRole?: string): number; + protected getHighestMaxWeaponDurabilityFromConfig(botRole?: string): number; + protected generateWeaponDurability(botRole: string | undefined, maxDurability: number): number; + protected generateArmorDurability(botRole: string | undefined, maxDurability: number): number; + protected getMinWeaponDeltaFromConfig(botRole?: string): number; + protected getMaxWeaponDeltaFromConfig(botRole?: string): number; + protected getMinArmorDeltaFromConfig(botRole?: string): number; + protected getMaxArmorDeltaFromConfig(botRole?: string): number; + protected getMinArmorLimitPercentFromConfig(botRole?: string): number; + protected getMinWeaponLimitPercentFromConfig(botRole?: string): number; } diff --git a/TypeScript/24WebSocket/types/helpers/GameEventHelper.d.ts b/TypeScript/24WebSocket/types/helpers/GameEventHelper.d.ts index 555cda2..b15a15d 100644 --- a/TypeScript/24WebSocket/types/helpers/GameEventHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/GameEventHelper.d.ts @@ -1,6 +1,6 @@ -import { ISeasonalEventConfig } from "@spt-aki/models/spt/config/ISeasonalEventConfig"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; +import { ISeasonalEventConfig } from "@spt/models/spt/config/ISeasonalEventConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; export declare class GameEventHelper { protected databaseServer: DatabaseServer; protected configServer: ConfigServer; diff --git a/TypeScript/24WebSocket/types/helpers/HandbookHelper.d.ts b/TypeScript/24WebSocket/types/helpers/HandbookHelper.d.ts index 276506a..0ed965e 100644 --- a/TypeScript/24WebSocket/types/helpers/HandbookHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/HandbookHelper.d.ts @@ -1,9 +1,9 @@ -import { Category } from "@spt-aki/models/eft/common/tables/IHandbookBase"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { IItemConfig } from "@spt-aki/models/spt/config/IItemConfig"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; +import { Category } from "@spt/models/eft/common/tables/IHandbookBase"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItemConfig } from "@spt/models/spt/config/IItemConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; declare class LookupItem { readonly byId: Map; readonly byParent: Map; @@ -15,21 +15,21 @@ export declare class LookupCollection { constructor(); } export declare class HandbookHelper { - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected configServer: ConfigServer; protected cloner: ICloner; protected itemConfig: IItemConfig; protected lookupCacheGenerated: boolean; protected handbookPriceCache: LookupCollection; - constructor(databaseServer: DatabaseServer, configServer: ConfigServer, cloner: ICloner); + constructor(databaseService: DatabaseService, configServer: ConfigServer, cloner: ICloner); /** * Create an in-memory cache of all items with associated handbook price in handbookPriceCache class */ hydrateLookup(): void; /** * Get price from internal cache, if cache empty look up price directly in handbook (expensive) - * If no values found, return 1 - * @param tpl item tpl to look up price for + * If no values found, return 0 + * @param tpl Item tpl to look up price for * @returns price in roubles */ getTemplatePrice(tpl: string): number; diff --git a/TypeScript/24WebSocket/types/helpers/HealthHelper.d.ts b/TypeScript/24WebSocket/types/helpers/HealthHelper.d.ts index 7a42ef1..650f633 100644 --- a/TypeScript/24WebSocket/types/helpers/HealthHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/HealthHelper.d.ts @@ -1,12 +1,12 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { ISyncHealthRequestData } from "@spt-aki/models/eft/health/ISyncHealthRequestData"; -import { Effects, IAkiProfile } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { IHealthConfig } from "@spt-aki/models/spt/config/IHealthConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { ISyncHealthRequestData } from "@spt/models/eft/health/ISyncHealthRequestData"; +import { Effects, ISptProfile } from "@spt/models/eft/profile/ISptProfile"; +import { IHealthConfig } from "@spt/models/spt/config/IHealthConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class HealthHelper { protected logger: ILogger; protected timeUtil: TimeUtil; @@ -20,14 +20,14 @@ export declare class HealthHelper { * @param sessionID Session Id * @returns updated profile */ - resetVitality(sessionID: string): IAkiProfile; + resetVitality(sessionID: string): ISptProfile; /** - * Update player profile with changes from request object + * Update player profile vitality values with changes from client request object * @param pmcData Player profile * @param request Heal request * @param sessionID Session id - * @param addEffects Should effects be added or removed (default - add) - * @param deleteExistingEffects Should all prior effects be removed before apply new ones + * @param addEffects Should effects be added to profile (default - true) + * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true) */ saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void; /** diff --git a/TypeScript/24WebSocket/types/helpers/HideoutHelper.d.ts b/TypeScript/24WebSocket/types/helpers/HideoutHelper.d.ts index 642c999..c4aaa4c 100644 --- a/TypeScript/24WebSocket/types/helpers/HideoutHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/HideoutHelper.d.ts @@ -1,32 +1,32 @@ -import { InventoryHelper } from "@spt-aki/helpers/InventoryHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { HideoutArea, IHideoutImprovement, Production, Productive } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { Item, Upd } from "@spt-aki/models/eft/common/tables/IItem"; -import { StageBonus } from "@spt-aki/models/eft/hideout/IHideoutArea"; -import { IHideoutContinuousProductionStartRequestData } from "@spt-aki/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; -import { IHideoutProduction } from "@spt-aki/models/eft/hideout/IHideoutProduction"; -import { IHideoutSingleProductionStartRequestData } from "@spt-aki/models/eft/hideout/IHideoutSingleProductionStartRequestData"; -import { IHideoutTakeProductionRequestData } from "@spt-aki/models/eft/hideout/IHideoutTakeProductionRequestData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { SkillTypes } from "@spt-aki/models/enums/SkillTypes"; -import { IHideoutConfig } from "@spt-aki/models/spt/config/IHideoutConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { PlayerService } from "@spt-aki/services/PlayerService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { HideoutArea, IHideoutImprovement, Production, Productive } from "@spt/models/eft/common/tables/IBotBase"; +import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { StageBonus } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutSingleProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutSingleProductionStartRequestData"; +import { IHideoutTakeProductionRequestData } from "@spt/models/eft/hideout/IHideoutTakeProductionRequestData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { SkillTypes } from "@spt/models/enums/SkillTypes"; +import { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { PlayerService } from "@spt/services/PlayerService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class HideoutHelper { protected logger: ILogger; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected eventOutputHolder: EventOutputHolder; protected httpResponse: HttpResponseUtil; protected profileHelper: ProfileHelper; @@ -39,11 +39,9 @@ export declare class HideoutHelper { static bitcoinFarm: string; static bitcoinProductionId: string; static waterCollector: string; - static bitcoinTpl: string; - static expeditionaryFuelTank: string; static maxSkillPoint: number; protected hideoutConfig: IHideoutConfig; - constructor(logger: ILogger, hashUtil: HashUtil, timeUtil: TimeUtil, databaseServer: DatabaseServer, eventOutputHolder: EventOutputHolder, httpResponse: HttpResponseUtil, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, playerService: PlayerService, localisationService: LocalisationService, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner); + constructor(logger: ILogger, hashUtil: HashUtil, timeUtil: TimeUtil, databaseService: DatabaseService, eventOutputHolder: EventOutputHolder, httpResponse: HttpResponseUtil, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, playerService: PlayerService, localisationService: LocalisationService, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner); /** * Add production to profiles' Hideout.Production array * @param pmcData Profile to add production to @@ -202,7 +200,7 @@ export declare class HideoutHelper { */ protected getAreaUpdObject(stackCount: number, resourceValue: number, resourceUnitsConsumed: number, isFoundInRaid: boolean): Upd; protected updateAirFilters(airFilterArea: HideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; - protected updateBitcoinFarm(pmcData: IPmcData, btcFarmCGs: number, isGeneratorOn: boolean): Production; + protected updateBitcoinFarm(pmcData: IPmcData, btcFarmCGs: number, isGeneratorOn: boolean): Production | undefined; /** * Add bitcoin object to btc production products array and set progress time * @param btcProd Bitcoin production object diff --git a/TypeScript/24WebSocket/types/helpers/HttpServerHelper.d.ts b/TypeScript/24WebSocket/types/helpers/HttpServerHelper.d.ts index feeaf85..9d5e6df 100644 --- a/TypeScript/24WebSocket/types/helpers/HttpServerHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/HttpServerHelper.d.ts @@ -1,5 +1,5 @@ -import { IHttpConfig } from "@spt-aki/models/spt/config/IHttpConfig"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; +import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; export declare class HttpServerHelper { protected configServer: ConfigServer; protected httpConfig: IHttpConfig; diff --git a/TypeScript/24WebSocket/types/helpers/InRaidHelper.d.ts b/TypeScript/24WebSocket/types/helpers/InRaidHelper.d.ts index 9301cf7..449be9f 100644 --- a/TypeScript/24WebSocket/types/helpers/InRaidHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/InRaidHelper.d.ts @@ -1,29 +1,29 @@ -import { InventoryHelper } from "@spt-aki/helpers/InventoryHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper"; -import { QuestHelper } from "@spt-aki/helpers/QuestHelper"; -import { IPmcData, IPostRaidPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IQuestStatus, TraderInfo } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ISaveProgressRequestData } from "@spt-aki/models/eft/inRaid/ISaveProgressRequestData"; -import { IInRaidConfig } from "@spt-aki/models/spt/config/IInRaidConfig"; -import { ILostOnDeathConfig } from "@spt-aki/models/spt/config/ILostOnDeathConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { ProfileFixerService } from "@spt-aki/services/ProfileFixerService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; -import { ProfileHelper } from "./ProfileHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PaymentHelper } from "@spt/helpers/PaymentHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { QuestHelper } from "@spt/helpers/QuestHelper"; +import { IPmcData, IPostRaidPmcData } from "@spt/models/eft/common/IPmcData"; +import { IQuestStatus, TraderInfo } from "@spt/models/eft/common/tables/IBotBase"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ISaveProgressRequestData } from "@spt/models/eft/inRaid/ISaveProgressRequestData"; +import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; +import { ILostOnDeathConfig } from "@spt/models/spt/config/ILostOnDeathConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { ProfileFixerService } from "@spt/services/ProfileFixerService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class InRaidHelper { protected logger: ILogger; protected timeUtil: TimeUtil; protected saveServer: SaveServer; protected itemHelper: ItemHelper; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected inventoryHelper: InventoryHelper; protected profileHelper: ProfileHelper; protected questHelper: QuestHelper; @@ -35,18 +35,18 @@ export declare class InRaidHelper { protected cloner: ICloner; protected lostOnDeathConfig: ILostOnDeathConfig; protected inRaidConfig: IInRaidConfig; - constructor(logger: ILogger, timeUtil: TimeUtil, saveServer: SaveServer, itemHelper: ItemHelper, databaseServer: DatabaseServer, inventoryHelper: InventoryHelper, profileHelper: ProfileHelper, questHelper: QuestHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, profileFixerService: ProfileFixerService, configServer: ConfigServer, randomUtil: RandomUtil, cloner: ICloner); + constructor(logger: ILogger, timeUtil: TimeUtil, saveServer: SaveServer, itemHelper: ItemHelper, databaseService: DatabaseService, inventoryHelper: InventoryHelper, profileHelper: ProfileHelper, questHelper: QuestHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, profileFixerService: ProfileFixerService, configServer: ConfigServer, randomUtil: RandomUtil, cloner: ICloner); /** * Lookup quest item loss from lostOnDeath config * @returns True if items should be removed from inventory */ - removeQuestItemsOnDeath(): boolean; + shouldQuestItemsBeRemovedOnDeath(): boolean; /** * Check items array and add an upd object to money with a stack count of 1 * Single stack money items have no upd object and thus no StackObjectsCount, causing issues * @param items Items array to check */ - addUpdToMoneyFromRaid(items: Item[]): void; + addStackCountToMoneyFromRaid(items: Item[]): void; /** * Reset a profile to a baseline, used post-raid * Reset points earned during session property @@ -86,6 +86,7 @@ export declare class InRaidHelper { * @param postRaidProfile Profile sent by client with post-raid quests */ protected processAlteredQuests(sessionId: string, pmcData: IPmcData, preRaidQuests: IQuestStatus[], postRaidProfile: IPostRaidPmcData): void; + protected handleFailRestartableQuestStatus(pmcData: IPmcData, postRaidProfile: IPostRaidPmcData, postRaidQuest: IQuestStatus): void; /** * Take body part effects from client profile and apply to server profile * @param saveProgressRequest post-raid request diff --git a/TypeScript/24WebSocket/types/helpers/InventoryHelper.d.ts b/TypeScript/24WebSocket/types/helpers/InventoryHelper.d.ts index 9e62f9d..f0ff69a 100644 --- a/TypeScript/24WebSocket/types/helpers/InventoryHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/InventoryHelper.d.ts @@ -1,40 +1,31 @@ -import { ContainerHelper } from "@spt-aki/helpers/ContainerHelper"; -import { DialogueHelper } from "@spt-aki/helpers/DialogueHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper"; -import { PresetHelper } from "@spt-aki/helpers/PresetHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { TraderAssortHelper } from "@spt-aki/helpers/TraderAssortHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Inventory } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { Item, Upd } from "@spt-aki/models/eft/common/tables/IItem"; -import { IAddItemDirectRequest } from "@spt-aki/models/eft/inventory/IAddItemDirectRequest"; -import { AddItem } from "@spt-aki/models/eft/inventory/IAddItemRequestData"; -import { IAddItemsDirectRequest } from "@spt-aki/models/eft/inventory/IAddItemsDirectRequest"; -import { IAddItemTempObject } from "@spt-aki/models/eft/inventory/IAddItemTempObject"; -import { IInventoryMergeRequestData } from "@spt-aki/models/eft/inventory/IInventoryMergeRequestData"; -import { IInventoryMoveRequestData } from "@spt-aki/models/eft/inventory/IInventoryMoveRequestData"; -import { IInventoryRemoveRequestData } from "@spt-aki/models/eft/inventory/IInventoryRemoveRequestData"; -import { IInventorySplitRequestData } from "@spt-aki/models/eft/inventory/IInventorySplitRequestData"; -import { IInventoryTransferRequestData } from "@spt-aki/models/eft/inventory/IInventoryTransferRequestData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IInventoryConfig, RewardDetails } from "@spt-aki/models/spt/config/IInventoryConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { FenceService } from "@spt-aki/services/FenceService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -export interface IOwnerInventoryItems { - /** Inventory items from source */ - from: Item[]; - /** Inventory items at destination */ - to: Item[]; - sameInventory: boolean; - isMail: boolean; -} +import { ContainerHelper } from "@spt/helpers/ContainerHelper"; +import { DialogueHelper } from "@spt/helpers/DialogueHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PaymentHelper } from "@spt/helpers/PaymentHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderAssortHelper } from "@spt/helpers/TraderAssortHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; +import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest"; +import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest"; +import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData"; +import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData"; +import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData"; +import { IInventorySplitRequestData } from "@spt/models/eft/inventory/IInventorySplitRequestData"; +import { IInventoryTransferRequestData } from "@spt/models/eft/inventory/IInventoryTransferRequestData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IInventoryConfig, RewardDetails } from "@spt/models/spt/config/IInventoryConfig"; +import { IOwnerInventoryItems } from "@spt/models/spt/inventory/IOwnerInventoryItems"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { FenceService } from "@spt/services/FenceService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class InventoryHelper { protected logger: ILogger; protected hashUtil: HashUtil; @@ -113,19 +104,12 @@ export declare class InventoryHelper { * Find a location to place an item into inventory and place it * @param stashFS2D 2-dimensional representation of the container slots * @param sortingTableFS2D 2-dimensional representation of the sorting table slots - * @param itemWithChildren Item to place - * @param playerInventory + * @param itemWithChildren Item to place with children + * @param playerInventory Players inventory * @param useSortingTable Should sorting table to be used if main stash has no space * @param output output to send back to client */ protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; - /** - * Split an items stack size based on its StackMaxSize value - * @param assortItems Items to add to inventory - * @param requestItem Details of purchased item to add to inventory - * @param result Array split stacks are appended to - */ - protected splitStackIntoSmallerChildStacks(assortItems: Item[], requestItem: AddItem, result: IAddItemTempObject[]): void; /** * Handle Remove event * Remove item from player inventory + insured items array @@ -161,6 +145,14 @@ export declare class InventoryHelper { * @returns [width, height] */ getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; + /** + * Calculates the size of an item including attachements + * takes into account if item is folded + * @param itemTpl Items template id + * @param itemID Items id + * @param inventoryItemHash Hashmap of inventory items + * @returns An array representing the [width, height] of the item + */ protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[]; /** * Get a blank two-dimentional representation of a container @@ -220,17 +212,17 @@ export declare class InventoryHelper { */ protected getStashType(sessionID: string): string; /** - * Internal helper function to transfer an item from one profile to another. - * @param fromItems Inventory of the source (can be non-player) + * Internal helper function to transfer an item + children from one profile to another. + * @param sourceItems Inventory of the source (can be non-player) * @param toItems Inventory of the destination - * @param body Move request + * @param request Move request */ - moveItemToProfile(fromItems: Item[], toItems: Item[], body: IInventoryMoveRequestData): void; + moveItemToProfile(sourceItems: Item[], toItems: Item[], request: IInventoryMoveRequestData): void; /** * Internal helper function to move item within the same profile_f. * @param pmcData profile to edit * @param inventoryItems - * @param moveRequest + * @param moveRequest client move request * @returns True if move was successful */ moveItemInternal(pmcData: IPmcData, inventoryItems: Item[], moveRequest: IInventoryMoveRequestData): { @@ -246,7 +238,7 @@ export declare class InventoryHelper { /** * Internal helper function to handle cartridges in inventory if any of them exist. */ - protected handleCartridges(items: Item[], body: IInventoryMoveRequestData): void; + protected handleCartridges(items: Item[], request: IInventoryMoveRequestData): void; /** * Get details for how a random loot container should be handled, max rewards, possible reward tpls * @param itemTpl Container being opened diff --git a/TypeScript/24WebSocket/types/helpers/ItemHelper.d.ts b/TypeScript/24WebSocket/types/helpers/ItemHelper.d.ts index 0779c12..da5dd11 100644 --- a/TypeScript/24WebSocket/types/helpers/ItemHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/ItemHelper.d.ts @@ -1,22 +1,23 @@ -import { HandbookHelper } from "@spt-aki/helpers/HandbookHelper"; -import { IStaticAmmoDetails } from "@spt-aki/models/eft/common/ILocation"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { InsuredItem } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { Item, Repairable, Upd } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { ItemBaseClassService } from "@spt-aki/services/ItemBaseClassService"; -import { ItemFilterService } from "@spt-aki/services/ItemFilterService"; -import { LocaleService } from "@spt-aki/services/LocaleService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { CompareUtil } from "@spt-aki/utils/CompareUtil"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { MathUtil } from "@spt-aki/utils/MathUtil"; -import { ObjectId } from "@spt-aki/utils/ObjectId"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { HandbookHelper } from "@spt/helpers/HandbookHelper"; +import { IStaticAmmoDetails } from "@spt/models/eft/common/ILocation"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { InsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { Item, Repairable, Upd } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { ItemTpl } from "@spt/models/enums/ItemTpl"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { ItemBaseClassService } from "@spt/services/ItemBaseClassService"; +import { ItemFilterService } from "@spt/services/ItemFilterService"; +import { LocaleService } from "@spt/services/LocaleService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { CompareUtil } from "@spt/utils/CompareUtil"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { JsonUtil } from "@spt/utils/JsonUtil"; +import { MathUtil } from "@spt/utils/MathUtil"; +import { ObjectId } from "@spt/utils/ObjectId"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class ItemHelper { protected logger: ILogger; protected hashUtil: HashUtil; @@ -24,7 +25,7 @@ export declare class ItemHelper { protected randomUtil: RandomUtil; protected objectId: ObjectId; protected mathUtil: MathUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected handbookHelper: HandbookHelper; protected itemBaseClassService: ItemBaseClassService; protected itemFilterService: ItemFilterService; @@ -33,7 +34,23 @@ export declare class ItemHelper { protected compareUtil: CompareUtil; protected cloner: ICloner; protected readonly defaultInvalidBaseTypes: string[]; - constructor(logger: ILogger, hashUtil: HashUtil, jsonUtil: JsonUtil, randomUtil: RandomUtil, objectId: ObjectId, mathUtil: MathUtil, databaseServer: DatabaseServer, handbookHelper: HandbookHelper, itemBaseClassService: ItemBaseClassService, itemFilterService: ItemFilterService, localisationService: LocalisationService, localeService: LocaleService, compareUtil: CompareUtil, cloner: ICloner); + constructor(logger: ILogger, hashUtil: HashUtil, jsonUtil: JsonUtil, randomUtil: RandomUtil, objectId: ObjectId, mathUtil: MathUtil, databaseService: DatabaseService, handbookHelper: HandbookHelper, itemBaseClassService: ItemBaseClassService, itemFilterService: ItemFilterService, localisationService: LocalisationService, localeService: LocaleService, compareUtil: CompareUtil, cloner: ICloner); + /** + * Does the provided pool of items contain the desired item + * @param itemPool Item collection to check + * @param item Item to look for + * @param slotId OPTIONAL - slotid of desired item + * @returns True if pool contains item + */ + hasItemWithTpl(itemPool: Item[], item: ItemTpl, slotId?: string): boolean; + /** + * Get the first item from provided pool with the desired tpl + * @param itemPool Item collection to search + * @param item Item to look for + * @param slotId OPTIONAL - slotid of desired item + * @returns Item or undefined + */ + getItemFromPoolByTpl(itemPool: Item[], item: ItemTpl, slotId?: string): Item | undefined; /** * This method will compare two items (with all its children) and see if the are equivalent. * This method will NOT compare IDs on the items @@ -165,15 +182,18 @@ export declare class ItemHelper { /** * Calcualte the average quality of an item and its children * @param items An offers item to process + * @param skipArmorItemsWithoutDurability Skip over armor items without durability * @returns % quality modifer between 0 and 1 */ - getItemQualityModifierForOfferItems(items: Item[]): number; + getItemQualityModifierForItems(items: Item[], skipArmorItemsWithoutDurability?: boolean): number; /** * get normalized value (0-1) based on item condition + * Will return -1 for base armor items with 0 durability * @param item - * @returns number between 0 and 1 + * @param skipArmorItemsWithoutDurability return -1 for armor items that have maxdurability of 0 + * @returns Number between 0 and 1 */ - getItemQualityModifier(item: Item): number; + getItemQualityModifier(item: Item, skipArmorItemsWithoutDurability?: boolean): number; /** * Get a quality value based on a repairable items (weapon/armor) current state between current and max durability * @param itemDetails Db details for item we want quality value for @@ -258,7 +278,7 @@ export declare class ItemHelper { * @param fastPanel Quick slot panel * @returns Item[] */ - replaceIDs(originalItems: Item[], pmcData?: IPmcData | null, insuredItems?: InsuredItem[] | null, fastPanel?: any): Item[]; + replaceIDs(originalItems: Item[], pmcData?: IPmcData, insuredItems?: InsuredItem[], fastPanel?: any): Item[]; /** * Mark the passed in array of items as found in raid. * Modifies passed in items @@ -287,9 +307,9 @@ export declare class ItemHelper { * * @param item The item to be checked * @param parent The parent of the item to be checked - * @returns True if the item is actually moddable, false if it is not, and null if the check cannot be performed. + * @returns True if the item is actually moddable, false if it is not, and undefined if the check cannot be performed. */ - isRaidModdable(item: Item, parent: Item): boolean | null; + isRaidModdable(item: Item, parent: Item): boolean | undefined; /** * Retrieves the main parent item for a given attachment item. * @@ -304,9 +324,9 @@ export declare class ItemHelper { * * @param itemId - The unique identifier of the item for which to find the main parent. * @param itemsMap - A Map containing item IDs mapped to their corresponding Item objects for quick lookup. - * @returns The Item object representing the top-most parent of the given item, or `null` if no such parent exists. + * @returns The Item object representing the top-most parent of the given item, or `undefined` if no such parent exists. */ - getAttachmentMainParent(itemId: string, itemsMap: Map): Item | null; + getAttachmentMainParent(itemId: string, itemsMap: Map): Item | undefined; /** * Determines if an item is an attachment that is currently attached to it's parent item. * @@ -327,9 +347,9 @@ export declare class ItemHelper { * * @param itemId - The unique identifier of the item for which to find the equipment parent. * @param itemsMap - A Map containing item IDs mapped to their corresponding Item objects for quick lookup. - * @returns The Item object representing the equipment parent of the given item, or `null` if no such parent exists. + * @returns The Item object representing the equipment parent of the given item, or `undefined` if no such parent exists. */ - getEquipmentParent(itemId: string, itemsMap: Map): Item | null; + getEquipmentParent(itemId: string, itemsMap: Map): Item | undefined; /** * Get the inventory size of an item * @param items Item with children @@ -342,7 +362,7 @@ export declare class ItemHelper { * @param item Db item template to look up Cartridge filter values from * @returns Caliber of cartridge */ - getRandomCompatibleCaliberTemplateId(item: ITemplateItem): string | null; + getRandomCompatibleCaliberTemplateId(item: ITemplateItem): string | undefined; /** * Add cartridges to the ammo box with correct max stack sizes * @param ammoBox Box to add cartridges to @@ -396,7 +416,7 @@ export declare class ItemHelper { * @param cartridgeWhitelist OPTIONAL whitelist for cartridges * @returns Tpl of cartridge */ - protected drawAmmoTpl(caliber: string, staticAmmoDist: Record, fallbackCartridgeTpl: string, cartridgeWhitelist?: string[]): string; + protected drawAmmoTpl(caliber: string, staticAmmoDist: Record, fallbackCartridgeTpl: string, cartridgeWhitelist?: string[]): string | undefined; /** * Create a basic cartrige object * @param parentId container cartridges will be placed in @@ -416,9 +436,14 @@ export declare class ItemHelper { /** * Get the name of an item from the locale file using the item tpl * @param itemTpl Tpl of item to get name of - * @returns Name of item + * @returns Full name, short name if not found */ getItemName(itemTpl: string): string; + /** + * Get all item tpls with a desired base type + * @param desiredBaseType Item base type wanted + * @returns Array of tpls + */ getItemTplsOfBaseType(desiredBaseType: string): string[]; /** * Add child slot items to an item, chooses random child item if multiple choices exist @@ -433,9 +458,9 @@ export declare class ItemHelper { * Get a compatible tpl from the array provided where it is not found in the provided incompatible mod tpls parameter * @param possibleTpls Tpls to randomly choose from * @param incompatibleModTpls Incompatible tpls to not allow - * @returns Chosen tpl or null + * @returns Chosen tpl or undefined */ - getCompatibleTplFromArray(possibleTpls: string[], incompatibleModTpls: Set): string; + getCompatibleTplFromArray(possibleTpls: string[], incompatibleModTpls: Set): string | undefined; /** * Is the provided item._props.Slots._name property a plate slot * @param slotName Name of slot (_name) of Items Slot array diff --git a/TypeScript/24WebSocket/types/helpers/NotificationSendHelper.d.ts b/TypeScript/24WebSocket/types/helpers/NotificationSendHelper.d.ts index 669cbb6..3a74563 100644 --- a/TypeScript/24WebSocket/types/helpers/NotificationSendHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/NotificationSendHelper.d.ts @@ -1,16 +1,16 @@ -import { Dialogue, IUserDialogInfo } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { IWsNotificationEvent } from "@spt-aki/models/eft/ws/IWsNotificationEvent"; -import { MessageType } from "@spt-aki/models/enums/MessageType"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { AkiWebSocketConnectionHandler } from "@spt-aki/servers/ws/AkiWebSocketConnectionHandler"; -import { NotificationService } from "@spt-aki/services/NotificationService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; +import { Dialogue, IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; +import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; +import { MessageType } from "@spt/models/enums/MessageType"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { SptWebSocketConnectionHandler } from "@spt/servers/ws/SptWebSocketConnectionHandler"; +import { NotificationService } from "@spt/services/NotificationService"; +import { HashUtil } from "@spt/utils/HashUtil"; export declare class NotificationSendHelper { - protected akiWebSocketConnection: AkiWebSocketConnectionHandler; + protected sptWebSocketConnection: SptWebSocketConnectionHandler; protected hashUtil: HashUtil; protected saveServer: SaveServer; protected notificationService: NotificationService; - constructor(akiWebSocketConnection: AkiWebSocketConnectionHandler, hashUtil: HashUtil, saveServer: SaveServer, notificationService: NotificationService); + constructor(sptWebSocketConnection: SptWebSocketConnectionHandler, hashUtil: HashUtil, saveServer: SaveServer, notificationService: NotificationService); /** * Send notification message to the appropriate channel * @param sessionID diff --git a/TypeScript/24WebSocket/types/helpers/NotifierHelper.d.ts b/TypeScript/24WebSocket/types/helpers/NotifierHelper.d.ts index c691563..b947f1b 100644 --- a/TypeScript/24WebSocket/types/helpers/NotifierHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/NotifierHelper.d.ts @@ -1,8 +1,8 @@ -import { HttpServerHelper } from "@spt-aki/helpers/HttpServerHelper"; -import { Message, MessageContentRagfair } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { IWsChatMessageReceived } from "@spt-aki/models/eft/ws/IWsChatMessageReceived"; -import { IWsNotificationEvent } from "@spt-aki/models/eft/ws/IWsNotificationEvent"; -import { IWsRagfairOfferSold } from "@spt-aki/models/eft/ws/IWsRagfairOfferSold"; +import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { Message, MessageContentRagfair } from "@spt/models/eft/profile/ISptProfile"; +import { IWsChatMessageReceived } from "@spt/models/eft/ws/IWsChatMessageReceived"; +import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; +import { IWsRagfairOfferSold } from "@spt/models/eft/ws/IWsRagfairOfferSold"; export declare class NotifierHelper { protected httpServerHelper: HttpServerHelper; /** diff --git a/TypeScript/24WebSocket/types/helpers/PaymentHelper.d.ts b/TypeScript/24WebSocket/types/helpers/PaymentHelper.d.ts index 04d4163..6971547 100644 --- a/TypeScript/24WebSocket/types/helpers/PaymentHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/PaymentHelper.d.ts @@ -1,5 +1,5 @@ -import { IInventoryConfig } from "@spt-aki/models/spt/config/IInventoryConfig"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; +import { IInventoryConfig } from "@spt/models/spt/config/IInventoryConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; export declare class PaymentHelper { protected configServer: ConfigServer; protected inventoryConfig: IInventoryConfig; diff --git a/TypeScript/24WebSocket/types/helpers/PresetHelper.d.ts b/TypeScript/24WebSocket/types/helpers/PresetHelper.d.ts index a2d3d47..f16d6ce 100644 --- a/TypeScript/24WebSocket/types/helpers/PresetHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/PresetHelper.d.ts @@ -1,16 +1,16 @@ -import { IPreset } from "@spt-aki/models/eft/common/IGlobals"; -import { BaseClasses } from "@spt-aki/models/enums/BaseClasses"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { ItemHelper } from "./ItemHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { IPreset } from "@spt/models/eft/common/IGlobals"; +import { BaseClasses } from "@spt/models/enums/BaseClasses"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class PresetHelper { - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected itemHelper: ItemHelper; protected cloner: ICloner; protected lookup: Record; protected defaultEquipmentPresets: Record; protected defaultWeaponPresets: Record; - constructor(databaseServer: DatabaseServer, itemHelper: ItemHelper, cloner: ICloner); + constructor(databaseService: DatabaseService, itemHelper: ItemHelper, cloner: ICloner); hydratePresetStore(input: Record): void; /** * Get default weapon and equipment presets @@ -44,7 +44,7 @@ export declare class PresetHelper { * @param templateId Item id to get preset for * @returns Null if no default preset, otherwise IPreset */ - getDefaultPreset(templateId: string): IPreset; + getDefaultPreset(templateId: string): IPreset | undefined; getBaseItemTpl(presetId: string): string; /** * Return the price of the preset for the given item tpl, or for the tpl itself if no preset exists diff --git a/TypeScript/24WebSocket/types/helpers/ProbabilityHelper.d.ts b/TypeScript/24WebSocket/types/helpers/ProbabilityHelper.d.ts index 8aceb67..fa12125 100644 --- a/TypeScript/24WebSocket/types/helpers/ProbabilityHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/ProbabilityHelper.d.ts @@ -1,5 +1,5 @@ -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class ProbabilityHelper { protected logger: ILogger; protected randomUtil: RandomUtil; diff --git a/TypeScript/24WebSocket/types/helpers/ProfileHelper.d.ts b/TypeScript/24WebSocket/types/helpers/ProfileHelper.d.ts index 9e0c467..0671179 100644 --- a/TypeScript/24WebSocket/types/helpers/ProfileHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/ProfileHelper.d.ts @@ -1,34 +1,34 @@ -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Common, CounterKeyValue, Stats } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { IAkiProfile } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { IValidateNicknameRequestData } from "@spt-aki/models/eft/profile/IValidateNicknameRequestData"; -import { SkillTypes } from "@spt-aki/models/enums/SkillTypes"; -import { IInventoryConfig } from "@spt-aki/models/spt/config/IInventoryConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { ProfileSnapshotService } from "@spt-aki/services/ProfileSnapshotService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; -import { Watermark } from "@spt-aki/utils/Watermark"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Common, CounterKeyValue, Stats } from "@spt/models/eft/common/tables/IBotBase"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; +import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; +import { SkillTypes } from "@spt/models/enums/SkillTypes"; +import { IInventoryConfig } from "@spt/models/spt/config/IInventoryConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { ProfileSnapshotService } from "@spt/services/ProfileSnapshotService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { Watermark } from "@spt/utils/Watermark"; export declare class ProfileHelper { protected logger: ILogger; protected hashUtil: HashUtil; protected watermark: Watermark; protected timeUtil: TimeUtil; protected saveServer: SaveServer; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected itemHelper: ItemHelper; protected profileSnapshotService: ProfileSnapshotService; protected localisationService: LocalisationService; protected configServer: ConfigServer; protected cloner: ICloner; protected inventoryConfig: IInventoryConfig; - constructor(logger: ILogger, hashUtil: HashUtil, watermark: Watermark, timeUtil: TimeUtil, saveServer: SaveServer, databaseServer: DatabaseServer, itemHelper: ItemHelper, profileSnapshotService: ProfileSnapshotService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + constructor(logger: ILogger, hashUtil: HashUtil, watermark: Watermark, timeUtil: TimeUtil, saveServer: SaveServer, databaseService: DatabaseService, itemHelper: ItemHelper, profileSnapshotService: ProfileSnapshotService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); /** * Remove/reset a completed quest condtion from players profile quest data * @param sessionID Session id @@ -39,13 +39,13 @@ export declare class ProfileHelper { * Get all profiles from server * @returns Dictionary of profiles */ - getProfiles(): Record; + getProfiles(): Record; /** * Get the pmc and scav profiles as an array by profile id - * @param sessionID + * @param sessionId * @returns Array of IPmcData objects */ - getCompleteProfile(sessionID: string): IPmcData[]; + getCompleteProfile(sessionId: string): IPmcData[]; /** * Fix xp doubling on post-raid xp reward screen by sending a 'dummy' profile to the post-raid screen * Server saves the post-raid changes prior to the xp screen getting the profile, this results in the xp screen using @@ -58,15 +58,15 @@ export declare class ProfileHelper { * @param scavProfile post-raid scav profile * @returns Updated profile array */ - protected postRaidXpWorkaroundFix(sessionId: string, output: IPmcData[], pmcProfile: IPmcData, scavProfile: IPmcData): IPmcData[]; + protected postRaidXpWorkaroundFix(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, output: IPmcData[]): IPmcData[]; /** * Check if a nickname is used by another profile loaded by the server * @param nicknameRequest nickname request object * @param sessionID Session id - * @returns True if already used + * @returns True if already in use */ isNicknameTaken(nicknameRequest: IValidateNicknameRequestData, sessionID: string): boolean; - protected profileHasInfoProperty(profile: IAkiProfile): boolean; + protected profileHasInfoProperty(profile: ISptProfile): boolean; protected stringsMatch(stringA: string, stringB: string): boolean; /** * Add experience to a PMC inside the players profile @@ -79,10 +79,10 @@ export declare class ProfileHelper { * @param pmcId Profile id to find * @returns IPmcData */ - getProfileByPmcId(pmcId: string): IPmcData; + getProfileByPmcId(pmcId: string): IPmcData | undefined; /** - * Get the experiecne for the given level - * @param level level to get xp for + * Get experience value for given level + * @param level Level to get xp for * @returns Number of xp points for level */ getExperience(level: number): number; @@ -91,19 +91,25 @@ export declare class ProfileHelper { * @returns Max level */ getMaxLevel(): number; - getDefaultAkiDataObject(): any; + getDefaultSptDataObject(): any; /** * Get full representation of a players profile json * @param sessionID Profile id to get - * @returns IAkiProfile object + * @returns ISptProfile object */ - getFullProfile(sessionID: string): IAkiProfile; + getFullProfile(sessionID: string): ISptProfile | undefined; /** * Get a PMC profile by its session id * @param sessionID Profile id to return * @returns IPmcData object */ - getPmcProfile(sessionID: string): IPmcData; + getPmcProfile(sessionID: string): IPmcData | undefined; + /** + * Is given user id a player + * @param userId Id to validate + * @returns True is a player + */ + isPlayer(userId: string): boolean; /** * Get a full profiles scav-specific sub-profile * @param sessionID Profiles id @@ -121,7 +127,6 @@ export declare class ProfileHelper { * @returns True if profile is to be wiped of data/progress */ protected isWiped(sessionID: string): boolean; - protected getServerVersion(): string; /** * Iterate over player profile inventory items and find the secure container and remove it * @param profile Profile to remove secure container from @@ -130,18 +135,20 @@ export declare class ProfileHelper { removeSecureContainer(profile: IPmcData): IPmcData; /** * Flag a profile as having received a gift - * Store giftid in profile aki object + * Store giftid in profile spt object * @param playerId Player to add gift flag to * @param giftId Gift player received + * @param maxCount Limit of how many of this gift a player can have */ - addGiftReceivedFlagToProfile(playerId: string, giftId: string): void; + flagGiftReceivedInProfile(playerId: string, giftId: string, maxCount: number): void; /** * Check if profile has recieved a gift by id * @param playerId Player profile to check for gift * @param giftId Gift to check for + * @param maxGiftCount Max times gift can be given to player * @returns True if player has recieved gift previously */ - playerHasRecievedGift(playerId: string, giftId: string): boolean; + playerHasRecievedMaxNumberOfGift(playerId: string, giftId: string, maxGiftCount: number): boolean; /** * Find Stat in profile counters and increment by one * @param counters Counters to search for key @@ -183,4 +190,12 @@ export declare class ProfileHelper { * @param rowsToAdd How many rows to give profile */ addStashRowsBonusToProfile(sessionId: string, rowsToAdd: number): void; + playerIsFleaBanned(pmcProfile: IPmcData): boolean; + /** + * Add an achievement to player profile + * @param pmcProfile Profile to add achievement to + * @param achievementId Id of achievement to add + */ + addAchievementToProfile(pmcProfile: IPmcData, achievementId: string): void; + hasAccessToRepeatableFreeRefreshSystem(pmcProfile: IPmcData): boolean; } diff --git a/TypeScript/24WebSocket/types/helpers/QuestConditionHelper.d.ts b/TypeScript/24WebSocket/types/helpers/QuestConditionHelper.d.ts index afb76f2..c50a9c3 100644 --- a/TypeScript/24WebSocket/types/helpers/QuestConditionHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/QuestConditionHelper.d.ts @@ -1,4 +1,4 @@ -import { IQuestCondition } from "@spt-aki/models/eft/common/tables/IQuest"; +import { IQuestCondition } from "@spt/models/eft/common/tables/IQuest"; export declare class QuestConditionHelper { getQuestConditions(q: IQuestCondition[], furtherFilter?: (a: IQuestCondition) => IQuestCondition[]): IQuestCondition[]; getLevelConditions(q: IQuestCondition[], furtherFilter?: (a: IQuestCondition) => IQuestCondition[]): IQuestCondition[]; diff --git a/TypeScript/24WebSocket/types/helpers/QuestHelper.d.ts b/TypeScript/24WebSocket/types/helpers/QuestHelper.d.ts index 75aaf01..2b84b8f 100644 --- a/TypeScript/24WebSocket/types/helpers/QuestHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/QuestHelper.d.ts @@ -1,51 +1,53 @@ -import { DialogueHelper } from "@spt-aki/helpers/DialogueHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper"; -import { PresetHelper } from "@spt-aki/helpers/PresetHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { QuestConditionHelper } from "@spt-aki/helpers/QuestConditionHelper"; -import { RagfairServerHelper } from "@spt-aki/helpers/RagfairServerHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Common, IQuestStatus } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { IQuest, IQuestCondition, IQuestReward } from "@spt-aki/models/eft/common/tables/IQuest"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IAcceptQuestRequestData } from "@spt-aki/models/eft/quests/IAcceptQuestRequestData"; -import { IFailQuestRequestData } from "@spt-aki/models/eft/quests/IFailQuestRequestData"; -import { QuestStatus } from "@spt-aki/models/enums/QuestStatus"; -import { IQuestConfig } from "@spt-aki/models/spt/config/IQuestConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocaleService } from "@spt-aki/services/LocaleService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { MailSendService } from "@spt-aki/services/MailSendService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { DialogueHelper } from "@spt/helpers/DialogueHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PaymentHelper } from "@spt/helpers/PaymentHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { QuestConditionHelper } from "@spt/helpers/QuestConditionHelper"; +import { RagfairServerHelper } from "@spt/helpers/RagfairServerHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Common, IQuestStatus } from "@spt/models/eft/common/tables/IBotBase"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IQuest, IQuestCondition, IQuestReward } from "@spt/models/eft/common/tables/IQuest"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IAcceptQuestRequestData } from "@spt/models/eft/quests/IAcceptQuestRequestData"; +import { IFailQuestRequestData } from "@spt/models/eft/quests/IFailQuestRequestData"; +import { QuestStatus } from "@spt/models/enums/QuestStatus"; +import { IQuestConfig } from "@spt/models/spt/config/IQuestConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocaleService } from "@spt/services/LocaleService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { MailSendService } from "@spt/services/MailSendService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class QuestHelper { protected logger: ILogger; protected timeUtil: TimeUtil; protected hashUtil: HashUtil; protected itemHelper: ItemHelper; + protected databaseService: DatabaseService; protected questConditionHelper: QuestConditionHelper; protected eventOutputHolder: EventOutputHolder; - protected databaseServer: DatabaseServer; protected localeService: LocaleService; protected ragfairServerHelper: RagfairServerHelper; protected dialogueHelper: DialogueHelper; protected profileHelper: ProfileHelper; protected paymentHelper: PaymentHelper; protected localisationService: LocalisationService; + protected seasonalEventService: SeasonalEventService; protected traderHelper: TraderHelper; protected presetHelper: PresetHelper; protected mailSendService: MailSendService; protected configServer: ConfigServer; protected cloner: ICloner; protected questConfig: IQuestConfig; - constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, itemHelper: ItemHelper, questConditionHelper: QuestConditionHelper, eventOutputHolder: EventOutputHolder, databaseServer: DatabaseServer, localeService: LocaleService, ragfairServerHelper: RagfairServerHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, traderHelper: TraderHelper, presetHelper: PresetHelper, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); + constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseService: DatabaseService, questConditionHelper: QuestConditionHelper, eventOutputHolder: EventOutputHolder, localeService: LocaleService, ragfairServerHelper: RagfairServerHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, seasonalEventService: SeasonalEventService, traderHelper: TraderHelper, presetHelper: PresetHelper, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); /** * Get status of a quest in player profile by its id * @param pmcData Profile to search @@ -128,6 +130,12 @@ export declare class QuestHelper { * @returns Quests accessible to player incuding newly unlocked quests now quest (startedQuestId) was started */ getNewlyAccessibleQuestsWhenStartingQuest(startedQuestId: string, sessionID: string): IQuest[]; + /** + * Should a seasonal/event quest be shown to the player + * @param questId Quest to check + * @returns true = show to player + */ + showEventQuestToPlayer(questId: string): boolean; /** * Is the quest for the opposite side the player is on * @param playerSide Player side (usec/bear) @@ -144,11 +152,11 @@ export declare class QuestHelper { /** * Adjust quest money rewards by passed in multiplier * @param quest Quest to multiple money rewards - * @param multiplier Value to adjust money rewards by + * @param bonusPercent Value to adjust money rewards by * @param questStatus Status of quest to apply money boost to rewards of * @returns Updated quest */ - applyMoneyBoost(quest: IQuest, multiplier: number, questStatus: QuestStatus): IQuest; + applyMoneyBoost(quest: IQuest, bonusPercent: number, questStatus: QuestStatus): IQuest; /** * Sets the item stack to new value, or delete the item if value <= 0 * // TODO maybe merge this function and the one from customization @@ -272,4 +280,10 @@ export declare class QuestHelper { * @returns array of IQuest objects */ getQuestsFailedByCompletingQuest(completedQuestId: string): IQuest[]; + /** + * Get the hours a mails items can be collected for by profile type + * @param pmcData Profile to get hours for + * @returns Hours item will be available for + */ + getMailItemRedeemTimeHoursForProfile(pmcData: IPmcData): number; } diff --git a/TypeScript/24WebSocket/types/helpers/RagfairHelper.d.ts b/TypeScript/24WebSocket/types/helpers/RagfairHelper.d.ts index e322b4d..52ca467 100644 --- a/TypeScript/24WebSocket/types/helpers/RagfairHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/RagfairHelper.d.ts @@ -1,20 +1,20 @@ -import { HandbookHelper } from "@spt-aki/helpers/HandbookHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { TraderAssortHelper } from "@spt-aki/helpers/TraderAssortHelper"; -import { UtilityHelper } from "@spt-aki/helpers/UtilityHelper"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITraderAssort } from "@spt-aki/models/eft/common/tables/ITrader"; -import { ISearchRequestData } from "@spt-aki/models/eft/ragfair/ISearchRequestData"; -import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { RagfairLinkedItemService } from "@spt-aki/services/RagfairLinkedItemService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; +import { HandbookHelper } from "@spt/helpers/HandbookHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { TraderAssortHelper } from "@spt/helpers/TraderAssortHelper"; +import { UtilityHelper } from "@spt/helpers/UtilityHelper"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITraderAssort } from "@spt/models/eft/common/tables/ITrader"; +import { ISearchRequestData } from "@spt/models/eft/ragfair/ISearchRequestData"; +import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { RagfairLinkedItemService } from "@spt/services/RagfairLinkedItemService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairHelper { protected logger: ILogger; protected traderAssortHelper: TraderAssortHelper; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected handbookHelper: HandbookHelper; protected itemHelper: ItemHelper; protected ragfairLinkedItemService: RagfairLinkedItemService; @@ -22,7 +22,7 @@ export declare class RagfairHelper { protected configServer: ConfigServer; protected cloner: ICloner; protected ragfairConfig: IRagfairConfig; - constructor(logger: ILogger, traderAssortHelper: TraderAssortHelper, databaseServer: DatabaseServer, handbookHelper: HandbookHelper, itemHelper: ItemHelper, ragfairLinkedItemService: RagfairLinkedItemService, utilityHelper: UtilityHelper, configServer: ConfigServer, cloner: ICloner); + constructor(logger: ILogger, traderAssortHelper: TraderAssortHelper, databaseService: DatabaseService, handbookHelper: HandbookHelper, itemHelper: ItemHelper, ragfairLinkedItemService: RagfairLinkedItemService, utilityHelper: UtilityHelper, configServer: ConfigServer, cloner: ICloner); /** * Gets currency TAG from TPL * @param {string} currency @@ -33,7 +33,7 @@ export declare class RagfairHelper { getDisplayableAssorts(sessionID: string): Record; protected getCategoryList(handbookId: string): string[]; /** - * Merges Root Items + * Iterate over array of identical items and merge stack count * Ragfair allows abnormally large stacks. */ mergeStackable(items: Item[]): Item[]; diff --git a/TypeScript/24WebSocket/types/helpers/RagfairOfferHelper.d.ts b/TypeScript/24WebSocket/types/helpers/RagfairOfferHelper.d.ts index 31bdc05..b526554 100644 --- a/TypeScript/24WebSocket/types/helpers/RagfairOfferHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/RagfairOfferHelper.d.ts @@ -1,44 +1,48 @@ -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper"; -import { PresetHelper } from "@spt-aki/helpers/PresetHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { RagfairHelper } from "@spt-aki/helpers/RagfairHelper"; -import { RagfairServerHelper } from "@spt-aki/helpers/RagfairServerHelper"; -import { RagfairSortHelper } from "@spt-aki/helpers/RagfairSortHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITraderAssort } from "@spt-aki/models/eft/common/tables/ITrader"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IAkiProfile } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { IRagfairOffer } from "@spt-aki/models/eft/ragfair/IRagfairOffer"; -import { ISearchRequestData } from "@spt-aki/models/eft/ragfair/ISearchRequestData"; -import { IQuestConfig } from "@spt-aki/models/spt/config/IQuestConfig"; -import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { LocaleService } from "@spt-aki/services/LocaleService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { MailSendService } from "@spt-aki/services/MailSendService"; -import { RagfairOfferService } from "@spt-aki/services/RagfairOfferService"; -import { RagfairRequiredItemsService } from "@spt-aki/services/RagfairRequiredItemsService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { BotHelper } from "@spt/helpers/BotHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PaymentHelper } from "@spt/helpers/PaymentHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { QuestHelper } from "@spt/helpers/QuestHelper"; +import { RagfairHelper } from "@spt/helpers/RagfairHelper"; +import { RagfairServerHelper } from "@spt/helpers/RagfairServerHelper"; +import { RagfairSortHelper } from "@spt/helpers/RagfairSortHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITraderAssort } from "@spt/models/eft/common/tables/ITrader"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; +import { IRagfairOffer } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ISearchRequestData } from "@spt/models/eft/ragfair/ISearchRequestData"; +import { IQuestConfig } from "@spt/models/spt/config/IQuestConfig"; +import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocaleService } from "@spt/services/LocaleService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { MailSendService } from "@spt/services/MailSendService"; +import { RagfairOfferService } from "@spt/services/RagfairOfferService"; +import { RagfairRequiredItemsService } from "@spt/services/RagfairRequiredItemsService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class RagfairOfferHelper { protected logger: ILogger; protected timeUtil: TimeUtil; protected hashUtil: HashUtil; protected eventOutputHolder: EventOutputHolder; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected traderHelper: TraderHelper; protected saveServer: SaveServer; protected itemHelper: ItemHelper; + protected botHelper: BotHelper; protected paymentHelper: PaymentHelper; protected presetHelper: PresetHelper; protected profileHelper: ProfileHelper; + protected questHelper: QuestHelper; protected ragfairServerHelper: RagfairServerHelper; protected ragfairSortHelper: RagfairSortHelper; protected ragfairHelper: RagfairHelper; @@ -51,7 +55,7 @@ export declare class RagfairOfferHelper { protected static goodSoldTemplate: string; protected ragfairConfig: IRagfairConfig; protected questConfig: IQuestConfig; - constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, eventOutputHolder: EventOutputHolder, databaseServer: DatabaseServer, traderHelper: TraderHelper, saveServer: SaveServer, itemHelper: ItemHelper, paymentHelper: PaymentHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, ragfairServerHelper: RagfairServerHelper, ragfairSortHelper: RagfairSortHelper, ragfairHelper: RagfairHelper, ragfairOfferService: RagfairOfferService, ragfairRequiredItemsService: RagfairRequiredItemsService, localeService: LocaleService, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer); + constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, eventOutputHolder: EventOutputHolder, databaseService: DatabaseService, traderHelper: TraderHelper, saveServer: SaveServer, itemHelper: ItemHelper, botHelper: BotHelper, paymentHelper: PaymentHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, questHelper: QuestHelper, ragfairServerHelper: RagfairServerHelper, ragfairSortHelper: RagfairSortHelper, ragfairHelper: RagfairHelper, ragfairOfferService: RagfairOfferService, ragfairRequiredItemsService: RagfairRequiredItemsService, localeService: LocaleService, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer); /** * Passthrough to ragfairOfferService.getOffers(), get flea offers a player should see * @param searchRequest Data from client @@ -116,12 +120,18 @@ export declare class RagfairOfferHelper { * @returns true = complete */ processOffersOnProfile(sessionID: string): boolean; + /** + * Count up all rootitem StackObjectsCount properties of an array of items + * @param itemsInInventoryToList items to sum up + * @returns Total count + */ + getTotalStackCountSize(itemsInInventoryToList: Item[][]): number; /** * Add amount to players ragfair rating * @param sessionId Profile to update * @param amountToIncrementBy Raw amount to add to players ragfair rating (excluding the reputation gain multiplier) */ - increaseProfileRagfairRating(profile: IAkiProfile, amountToIncrementBy: number): void; + increaseProfileRagfairRating(profile: ISptProfile, amountToIncrementBy: number): void; /** * Return all offers a player has listed on a desired profile * @param sessionID Session id @@ -173,7 +183,7 @@ export declare class RagfairOfferHelper { * @param pmcProfile Player profile * @returns True = should be shown to player */ - isDisplayableOffer(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, offer: IRagfairOffer, pmcProfile: IPmcData): boolean; + isDisplayableOffer(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, offer: IRagfairOffer, pmcProfile: IPmcData, playerIsFleaBanned?: boolean): boolean; isDisplayableOfferThatNeedsItem(searchRequest: ISearchRequestData, offer: IRagfairOffer): boolean; /** * Does the passed in item have a condition property diff --git a/TypeScript/24WebSocket/types/helpers/RagfairSellHelper.d.ts b/TypeScript/24WebSocket/types/helpers/RagfairSellHelper.d.ts index 7a4de8a..fc9e4b5 100644 --- a/TypeScript/24WebSocket/types/helpers/RagfairSellHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/RagfairSellHelper.d.ts @@ -1,18 +1,18 @@ -import { SellResult } from "@spt-aki/models/eft/ragfair/IRagfairOffer"; -import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { SellResult } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class RagfairSellHelper { protected logger: ILogger; protected randomUtil: RandomUtil; protected timeUtil: TimeUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected configServer: ConfigServer; protected ragfairConfig: IRagfairConfig; - constructor(logger: ILogger, randomUtil: RandomUtil, timeUtil: TimeUtil, databaseServer: DatabaseServer, configServer: ConfigServer); + constructor(logger: ILogger, randomUtil: RandomUtil, timeUtil: TimeUtil, databaseService: DatabaseService, configServer: ConfigServer); /** * Get the percent chance to sell an item based on its average listed price vs player chosen listing price * @param averageOfferPriceRub Price of average offer in roubles @@ -25,7 +25,8 @@ export declare class RagfairSellHelper { * Get array of item count and sell time (empty array = no sell) * @param sellChancePercent chance item will sell * @param itemSellCount count of items to sell + * @param sellInOneGo All items listed get sold at once * @returns Array of purchases of item(s) listed */ - rollForSale(sellChancePercent: number, itemSellCount: number): SellResult[]; + rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): SellResult[]; } diff --git a/TypeScript/24WebSocket/types/helpers/RagfairServerHelper.d.ts b/TypeScript/24WebSocket/types/helpers/RagfairServerHelper.d.ts index 33f81d0..927caf5 100644 --- a/TypeScript/24WebSocket/types/helpers/RagfairServerHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/RagfairServerHelper.d.ts @@ -1,46 +1,41 @@ -import { DialogueHelper } from "@spt-aki/helpers/DialogueHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { MemberCategory } from "@spt-aki/models/enums/MemberCategory"; -import { IQuestConfig } from "@spt-aki/models/spt/config/IQuestConfig"; -import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { ItemFilterService } from "@spt-aki/services/ItemFilterService"; -import { LocaleService } from "@spt-aki/services/LocaleService"; -import { MailSendService } from "@spt-aki/services/MailSendService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { IQuestConfig } from "@spt/models/spt/config/IQuestConfig"; +import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { ItemFilterService } from "@spt/services/ItemFilterService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { MailSendService } from "@spt/services/MailSendService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; /** * Helper class for common ragfair server actions */ export declare class RagfairServerHelper { protected logger: ILogger; protected randomUtil: RandomUtil; - protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected saveServer: SaveServer; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected profileHelper: ProfileHelper; protected itemHelper: ItemHelper; - protected localeService: LocaleService; - protected dialogueHelper: DialogueHelper; protected traderHelper: TraderHelper; protected mailSendService: MailSendService; + protected localisationService: LocalisationService; protected itemFilterService: ItemFilterService; protected configServer: ConfigServer; protected cloner: ICloner; protected ragfairConfig: IRagfairConfig; protected questConfig: IQuestConfig; protected static goodsReturnedTemplate: string; - constructor(logger: ILogger, randomUtil: RandomUtil, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, databaseServer: DatabaseServer, profileHelper: ProfileHelper, itemHelper: ItemHelper, localeService: LocaleService, dialogueHelper: DialogueHelper, traderHelper: TraderHelper, mailSendService: MailSendService, itemFilterService: ItemFilterService, configServer: ConfigServer, cloner: ICloner); + constructor(logger: ILogger, randomUtil: RandomUtil, timeUtil: TimeUtil, saveServer: SaveServer, databaseService: DatabaseService, profileHelper: ProfileHelper, itemHelper: ItemHelper, traderHelper: TraderHelper, mailSendService: MailSendService, localisationService: LocalisationService, itemFilterService: ItemFilterService, configServer: ConfigServer, cloner: ICloner); /** * Is item valid / on blacklist / quest item * @param itemDetails @@ -65,12 +60,6 @@ export declare class RagfairServerHelper { * @returns True if id was a trader */ isTrader(traderId: string): boolean; - /** - * Is this user id the logged in player - * @param userId Id to test - * @returns True is the current player - */ - isPlayer(userId: string): boolean; /** * Send items back to player * @param sessionID Player to send items to @@ -83,13 +72,6 @@ export declare class RagfairServerHelper { * @returns currency tpl */ getDynamicOfferCurrency(): string; - getMemberType(userID: string): MemberCategory; - /** - * Get a player or traders nickname from their profile by their user id - * @param userID Sessionid/userid - * @returns Nickname of individual - */ - getNickname(userID: string): string; /** * Given a preset id from globals.json, return an array of items[] with unique ids * @param item Preset item diff --git a/TypeScript/24WebSocket/types/helpers/RagfairSortHelper.d.ts b/TypeScript/24WebSocket/types/helpers/RagfairSortHelper.d.ts index 5bd8f96..9971559 100644 --- a/TypeScript/24WebSocket/types/helpers/RagfairSortHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/RagfairSortHelper.d.ts @@ -1,7 +1,7 @@ -import { IRagfairOffer } from "@spt-aki/models/eft/ragfair/IRagfairOffer"; -import { RagfairSort } from "@spt-aki/models/enums/RagfairSort"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocaleService } from "@spt-aki/services/LocaleService"; +import { IRagfairOffer } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { RagfairSort } from "@spt/models/enums/RagfairSort"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { LocaleService } from "@spt/services/LocaleService"; export declare class RagfairSortHelper { protected databaseServer: DatabaseServer; protected localeService: LocaleService; @@ -15,6 +15,7 @@ export declare class RagfairSortHelper { */ sortOffers(offers: IRagfairOffer[], type: RagfairSort, direction?: number): IRagfairOffer[]; protected sortOffersByID(a: IRagfairOffer, b: IRagfairOffer): number; + protected sortOffersByBarter(a: IRagfairOffer, b: IRagfairOffer): number; protected sortOffersByRating(a: IRagfairOffer, b: IRagfairOffer): number; protected sortOffersByName(a: IRagfairOffer, b: IRagfairOffer): number; /** diff --git a/TypeScript/24WebSocket/types/helpers/RepairHelper.d.ts b/TypeScript/24WebSocket/types/helpers/RepairHelper.d.ts index 30a56a6..99a21da 100644 --- a/TypeScript/24WebSocket/types/helpers/RepairHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/RepairHelper.d.ts @@ -1,19 +1,19 @@ -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITemplateItem, Props } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { IRepairConfig } from "@spt-aki/models/spt/config/IRepairConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem, Props } from "@spt/models/eft/common/tables/ITemplateItem"; +import { IRepairConfig } from "@spt/models/spt/config/IRepairConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class RepairHelper { protected logger: ILogger; protected randomUtil: RandomUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected configServer: ConfigServer; protected cloner: ICloner; protected repairConfig: IRepairConfig; - constructor(logger: ILogger, randomUtil: RandomUtil, databaseServer: DatabaseServer, configServer: ConfigServer, cloner: ICloner); + constructor(logger: ILogger, randomUtil: RandomUtil, databaseService: DatabaseService, configServer: ConfigServer, cloner: ICloner); /** * Alter an items durability after a repair by trader/repair kit * @param itemToRepair item to update durability details diff --git a/TypeScript/24WebSocket/types/helpers/RepeatableQuestHelper.d.ts b/TypeScript/24WebSocket/types/helpers/RepeatableQuestHelper.d.ts index 8f9ac7b..d92657e 100644 --- a/TypeScript/24WebSocket/types/helpers/RepeatableQuestHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/RepeatableQuestHelper.d.ts @@ -1,8 +1,8 @@ -import { IEliminationConfig, IQuestConfig, IRepeatableQuestConfig } from "@spt-aki/models/spt/config/IQuestConfig"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { MathUtil } from "@spt-aki/utils/MathUtil"; -import { ProbabilityObject, ProbabilityObjectArray } from "@spt-aki/utils/RandomUtil"; +import { IEliminationConfig, IQuestConfig, IRepeatableQuestConfig } from "@spt/models/spt/config/IQuestConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { MathUtil } from "@spt/utils/MathUtil"; +import { ProbabilityObject, ProbabilityObjectArray } from "@spt/utils/RandomUtil"; export declare class RepeatableQuestHelper { protected mathUtil: MathUtil; protected configServer: ConfigServer; diff --git a/TypeScript/24WebSocket/types/helpers/SecureContainerHelper.d.ts b/TypeScript/24WebSocket/types/helpers/SecureContainerHelper.d.ts index 36b227c..b6bcffe 100644 --- a/TypeScript/24WebSocket/types/helpers/SecureContainerHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/SecureContainerHelper.d.ts @@ -1,5 +1,5 @@ -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { Item } from "@spt/models/eft/common/tables/IItem"; export interface OwnerInventoryItems { from: Item[]; to: Item[]; diff --git a/TypeScript/24WebSocket/types/helpers/TradeHelper.d.ts b/TypeScript/24WebSocket/types/helpers/TradeHelper.d.ts index 3dc7ffb..f994fda 100644 --- a/TypeScript/24WebSocket/types/helpers/TradeHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/TradeHelper.d.ts @@ -1,24 +1,24 @@ -import { InventoryHelper } from "@spt-aki/helpers/InventoryHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { TraderAssortHelper } from "@spt-aki/helpers/TraderAssortHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IProcessBuyTradeRequestData } from "@spt-aki/models/eft/trade/IProcessBuyTradeRequestData"; -import { IProcessSellTradeRequestData } from "@spt-aki/models/eft/trade/IProcessSellTradeRequestData"; -import { IInventoryConfig } from "@spt-aki/models/spt/config/IInventoryConfig"; -import { ITraderConfig } from "@spt-aki/models/spt/config/ITraderConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { RagfairServer } from "@spt-aki/servers/RagfairServer"; -import { FenceService } from "@spt-aki/services/FenceService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { PaymentService } from "@spt-aki/services/PaymentService"; -import { TraderPurchasePersisterService } from "@spt-aki/services/TraderPurchasePersisterService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { TraderAssortHelper } from "@spt/helpers/TraderAssortHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IProcessBuyTradeRequestData } from "@spt/models/eft/trade/IProcessBuyTradeRequestData"; +import { IProcessSellTradeRequestData } from "@spt/models/eft/trade/IProcessSellTradeRequestData"; +import { IInventoryConfig } from "@spt/models/spt/config/IInventoryConfig"; +import { ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { RagfairServer } from "@spt/servers/RagfairServer"; +import { FenceService } from "@spt/services/FenceService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { PaymentService } from "@spt/services/PaymentService"; +import { TraderPurchasePersisterService } from "@spt/services/TraderPurchasePersisterService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class TradeHelper { protected logger: ILogger; protected eventOutputHolder: EventOutputHolder; @@ -59,10 +59,11 @@ export declare class TradeHelper { /** * Traders allow a limited number of purchases per refresh cycle (default 60 mins) * @param sessionId Session id + * @param pmcData Profile making the purchase * @param traderId Trader assort is purchased from * @param assortBeingPurchased the item from trader being bought * @param assortId Id of assort being purchased * @param count How many of the item are being bought */ - protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, traderId: string, assortBeingPurchased: Item, assortId: string, count: number): void; + protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: Item, assortId: string, count: number): void; } diff --git a/TypeScript/24WebSocket/types/helpers/TraderAssortHelper.d.ts b/TypeScript/24WebSocket/types/helpers/TraderAssortHelper.d.ts index 33c4c83..8f8f802 100644 --- a/TypeScript/24WebSocket/types/helpers/TraderAssortHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/TraderAssortHelper.d.ts @@ -1,27 +1,27 @@ -import { RagfairAssortGenerator } from "@spt-aki/generators/RagfairAssortGenerator"; -import { RagfairOfferGenerator } from "@spt-aki/generators/RagfairOfferGenerator"; -import { AssortHelper } from "@spt-aki/helpers/AssortHelper"; -import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITrader, ITraderAssort } from "@spt-aki/models/eft/common/tables/ITrader"; -import { ITraderConfig } from "@spt-aki/models/spt/config/ITraderConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { FenceService } from "@spt-aki/services/FenceService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { TraderAssortService } from "@spt-aki/services/TraderAssortService"; -import { TraderPurchasePersisterService } from "@spt-aki/services/TraderPurchasePersisterService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { MathUtil } from "@spt-aki/utils/MathUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { RagfairAssortGenerator } from "@spt/generators/RagfairAssortGenerator"; +import { RagfairOfferGenerator } from "@spt/generators/RagfairOfferGenerator"; +import { AssortHelper } from "@spt/helpers/AssortHelper"; +import { PaymentHelper } from "@spt/helpers/PaymentHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITrader, ITraderAssort } from "@spt/models/eft/common/tables/ITrader"; +import { ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { FenceService } from "@spt/services/FenceService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { TraderAssortService } from "@spt/services/TraderAssortService"; +import { TraderPurchasePersisterService } from "@spt/services/TraderPurchasePersisterService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { MathUtil } from "@spt/utils/MathUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class TraderAssortHelper { protected logger: ILogger; protected mathUtil: MathUtil; protected timeUtil: TimeUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected profileHelper: ProfileHelper; protected assortHelper: AssortHelper; protected paymentHelper: PaymentHelper; @@ -37,7 +37,7 @@ export declare class TraderAssortHelper { protected traderConfig: ITraderConfig; protected mergedQuestAssorts: Record>; protected createdMergedQuestAssorts: boolean; - constructor(logger: ILogger, mathUtil: MathUtil, timeUtil: TimeUtil, databaseServer: DatabaseServer, profileHelper: ProfileHelper, assortHelper: AssortHelper, paymentHelper: PaymentHelper, ragfairAssortGenerator: RagfairAssortGenerator, ragfairOfferGenerator: RagfairOfferGenerator, traderAssortService: TraderAssortService, localisationService: LocalisationService, traderPurchasePersisterService: TraderPurchasePersisterService, traderHelper: TraderHelper, fenceService: FenceService, configServer: ConfigServer, cloner: ICloner); + constructor(logger: ILogger, mathUtil: MathUtil, timeUtil: TimeUtil, databaseService: DatabaseService, profileHelper: ProfileHelper, assortHelper: AssortHelper, paymentHelper: PaymentHelper, ragfairAssortGenerator: RagfairAssortGenerator, ragfairOfferGenerator: RagfairOfferGenerator, traderAssortService: TraderAssortService, localisationService: LocalisationService, traderPurchasePersisterService: TraderPurchasePersisterService, traderHelper: TraderHelper, fenceService: FenceService, configServer: ConfigServer, cloner: ICloner); /** * Get a traders assorts * Can be used for returning ragfair / fence assorts @@ -48,6 +48,12 @@ export declare class TraderAssortHelper { * @returns a traders' assorts */ getAssort(sessionId: string, traderId: string, flea?: boolean): ITraderAssort; + /** + * Given the blacklist provided, remove root items from assort + * @param assortToFilter Trader assort to modify + * @param itemsTplsToRemove Item TPLs the assort should not have + */ + protected removeItemsFromAssort(assortToFilter: ITraderAssort, itemsTplsToRemove: string[]): void; /** * Reset every traders root item `BuyRestrictionCurrent` property to 0 * @param assortItems Items to adjust diff --git a/TypeScript/24WebSocket/types/helpers/TraderHelper.d.ts b/TypeScript/24WebSocket/types/helpers/TraderHelper.d.ts index 256ebf8..52c0d9b 100644 --- a/TypeScript/24WebSocket/types/helpers/TraderHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/TraderHelper.d.ts @@ -1,25 +1,24 @@ -import { HandbookHelper } from "@spt-aki/helpers/HandbookHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ProfileTraderTemplate } from "@spt-aki/models/eft/common/tables/IProfileTemplate"; -import { ITraderAssort, ITraderBase, LoyaltyLevel } from "@spt-aki/models/eft/common/tables/ITrader"; -import { Traders } from "@spt-aki/models/enums/Traders"; -import { ITraderConfig } from "@spt-aki/models/spt/config/ITraderConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { FenceService } from "@spt-aki/services/FenceService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { PlayerService } from "@spt-aki/services/PlayerService"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { HandbookHelper } from "@spt/helpers/HandbookHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ProfileTraderTemplate } from "@spt/models/eft/common/tables/IProfileTemplate"; +import { ITraderAssort, ITraderBase, LoyaltyLevel } from "@spt/models/eft/common/tables/ITrader"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; +import { Traders } from "@spt/models/enums/Traders"; +import { ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { FenceService } from "@spt/services/FenceService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { PlayerService } from "@spt/services/PlayerService"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class TraderHelper { protected logger: ILogger; - protected databaseServer: DatabaseServer; - protected saveServer: SaveServer; + protected databaseService: DatabaseService; protected profileHelper: ProfileHelper; protected handbookHelper: HandbookHelper; protected itemHelper: ItemHelper; @@ -31,10 +30,8 @@ export declare class TraderHelper { protected configServer: ConfigServer; protected traderConfig: ITraderConfig; /** Dictionary of item tpl and the highest trader sell rouble price */ - protected highestTraderPriceItems: Record; - /** Dictionary of item tpl and the highest trader buy back rouble price */ - protected highestTraderBuyPriceItems: Record; - constructor(logger: ILogger, databaseServer: DatabaseServer, saveServer: SaveServer, profileHelper: ProfileHelper, handbookHelper: HandbookHelper, itemHelper: ItemHelper, playerService: PlayerService, localisationService: LocalisationService, fenceService: FenceService, timeUtil: TimeUtil, randomUtil: RandomUtil, configServer: ConfigServer); + protected highestTraderPriceItems?: Record; + constructor(logger: ILogger, databaseService: DatabaseService, profileHelper: ProfileHelper, handbookHelper: HandbookHelper, itemHelper: ItemHelper, playerService: PlayerService, localisationService: LocalisationService, fenceService: FenceService, timeUtil: TimeUtil, randomUtil: RandomUtil, configServer: ConfigServer); /** * Get a trader base object, update profile to reflect players current standing in profile * when trader not found in profile @@ -42,7 +39,7 @@ export declare class TraderHelper { * @param sessionID Players id * @returns Trader base */ - getTrader(traderID: string, sessionID: string): ITraderBase; + getTrader(traderID: string, sessionID: string): ITraderBase | undefined; /** * Get all assort data for a particular trader * @param traderId Trader to get assorts for @@ -55,7 +52,7 @@ export declare class TraderHelper { * @param assortId Id of assort to find * @returns Item object */ - getTraderAssortItemByAssortId(traderId: string, assortId: string): Item; + getTraderAssortItemByAssortId(traderId: string, assortId: string): Item | undefined; /** * 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 @@ -70,6 +67,12 @@ export declare class TraderHelper { * @returns Standing value */ protected getStartingStanding(traderId: string, rawProfileTemplate: ProfileTraderTemplate): number; + /** + * Add an array of suit ids to a profiles suit array, no duplicates + * @param fullProfile Profile to add to + * @param suitIds Suit Ids to add + */ + protected addSuitsToProfile(fullProfile: ISptProfile, suitIds: string[]): void; /** * Alter a traders unlocked status * @param traderId Trader to alter @@ -91,10 +94,16 @@ export declare class TraderHelper { * @returns current standing + added standing (clamped if needed) */ protected addStandingValuesTogether(currentStanding: number, standingToAdd: number): number; + /** + * iterate over a profiles traders and ensure they have the correct loyaltyLevel for the player + * @param sessionId Profile to check + */ + validateTraderStandingsAndPlayerLevelForProfile(sessionId: string): void; /** * Calculate traders level based on exp amount and increments level if over threshold - * @param traderID trader to check standing of - * @param pmcData profile to update trader in + * Also validates and updates player level if not correct based on XP value + * @param traderID Trader to check standing of + * @param pmcData Profile to update trader in */ lvlUp(traderID: string, pmcData: IPmcData): void; /** @@ -108,7 +117,7 @@ export declare class TraderHelper { * @param traderId Trader to look up * @returns Time in seconds */ - getTraderUpdateSeconds(traderId: string): number; + getTraderUpdateSeconds(traderId: string): number | undefined; getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel; /** * Store the purchase of an assort from a trader in the player profile @@ -122,6 +131,13 @@ export declare class TraderHelper { }[]; traderId: string; }, itemPurchased: Item): void; + /** + * EoD and Unheard get a 20% bonus to personal trader limit purchases + * @param buyRestrictionMax Existing value from trader item + * @param gameVersion Profiles game version + * @returns buyRestrictionMax value + */ + getAccountTypeAdjustedTraderPurchaseLimit(buyRestrictionMax: number, gameVersion: string): number; /** * Get the highest rouble price for an item from traders * UNUSED @@ -140,7 +156,7 @@ export declare class TraderHelper { * @param traderId Traders id * @returns Traders key */ - getTraderById(traderId: string): Traders; + getTraderById(traderId: string): Traders | undefined; /** * Validates that the provided traderEnumValue exists in the Traders enum. If the value is valid, it returns the * same enum value, effectively serving as a trader ID; otherwise, it logs an error and returns an empty string. diff --git a/TypeScript/24WebSocket/types/loaders/BundleLoader.d.ts b/TypeScript/24WebSocket/types/loaders/BundleLoader.d.ts index fc7ee2b..e270988 100644 --- a/TypeScript/24WebSocket/types/loaders/BundleLoader.d.ts +++ b/TypeScript/24WebSocket/types/loaders/BundleLoader.d.ts @@ -1,8 +1,8 @@ -import { HttpServerHelper } from "@spt-aki/helpers/HttpServerHelper"; -import { BundleHashCacheService } from "@spt-aki/services/cache/BundleHashCacheService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { VFS } from "@spt-aki/utils/VFS"; +import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { BundleHashCacheService } from "@spt/services/cache/BundleHashCacheService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { JsonUtil } from "@spt/utils/JsonUtil"; +import { VFS } from "@spt/utils/VFS"; export declare class BundleInfo { modpath: string; filename: string; diff --git a/TypeScript/24WebSocket/types/loaders/ModLoadOrder.d.ts b/TypeScript/24WebSocket/types/loaders/ModLoadOrder.d.ts index 2d03dc1..039f648 100644 --- a/TypeScript/24WebSocket/types/loaders/ModLoadOrder.d.ts +++ b/TypeScript/24WebSocket/types/loaders/ModLoadOrder.d.ts @@ -1,6 +1,6 @@ -import { IPackageJsonData } from "@spt-aki/models/spt/mod/IPackageJsonData"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; +import { IPackageJsonData } from "@spt/models/spt/mod/IPackageJsonData"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { LocalisationService } from "@spt/services/LocalisationService"; export declare class ModLoadOrder { protected logger: ILogger; protected localisationService: LocalisationService; diff --git a/TypeScript/24WebSocket/types/loaders/ModTypeCheck.d.ts b/TypeScript/24WebSocket/types/loaders/ModTypeCheck.d.ts index fb4912e..f66ec45 100644 --- a/TypeScript/24WebSocket/types/loaders/ModTypeCheck.d.ts +++ b/TypeScript/24WebSocket/types/loaders/ModTypeCheck.d.ts @@ -1,40 +1,40 @@ -import { IPostAkiLoadMod } from "@spt-aki/models/external/IPostAkiLoadMod"; -import { IPostAkiLoadModAsync } from "@spt-aki/models/external/IPostAkiLoadModAsync"; -import { IPostDBLoadMod } from "@spt-aki/models/external/IPostDBLoadMod"; -import { IPostDBLoadModAsync } from "@spt-aki/models/external/IPostDBLoadModAsync"; -import { IPreAkiLoadMod } from "@spt-aki/models/external/IPreAkiLoadMod"; -import { IPreAkiLoadModAsync } from "@spt-aki/models/external/IPreAkiLoadModAsync"; +import { IPostDBLoadMod } from "@spt/models/external/IPostDBLoadMod"; +import { IPostDBLoadModAsync } from "@spt/models/external/IPostDBLoadModAsync"; +import { IPostSptLoadMod } from "@spt/models/external/IPostSptLoadMod"; +import { IPostSptLoadModAsync } from "@spt/models/external/IPostSptLoadModAsync"; +import { IPreSptLoadMod } from "@spt/models/external/IPreSptLoadMod"; +import { IPreSptLoadModAsync } from "@spt/models/external/IPreSptLoadModAsync"; export declare class ModTypeCheck { /** - * Use defined safe guard to check if the mod is a IPreAkiLoadMod + * Use defined safe guard to check if the mod is a IPreSptLoadMod * @returns boolean */ - isPreAkiLoad(mod: any): mod is IPreAkiLoadMod; + isPreSptLoad(mod: any): mod is IPreSptLoadMod; /** - * Use defined safe guard to check if the mod is a IPostAkiLoadMod + * Use defined safe guard to check if the mod is a IPostSptLoadMod * @returns boolean */ - isPostAkiLoad(mod: any): mod is IPostAkiLoadMod; + isPostSptLoad(mod: any): mod is IPostSptLoadMod; /** * Use defined safe guard to check if the mod is a IPostDBLoadMod * @returns boolean */ - isPostDBAkiLoad(mod: any): mod is IPostDBLoadMod; + isPostDBLoad(mod: any): mod is IPostDBLoadMod; /** - * Use defined safe guard to check if the mod is a IPreAkiLoadModAsync + * Use defined safe guard to check if the mod is a IPreSptLoadModAsync * @returns boolean */ - isPreAkiLoadAsync(mod: any): mod is IPreAkiLoadModAsync; + isPreSptLoadAsync(mod: any): mod is IPreSptLoadModAsync; /** - * Use defined safe guard to check if the mod is a IPostAkiLoadModAsync + * Use defined safe guard to check if the mod is a IPostSptLoadModAsync * @returns boolean */ - isPostAkiLoadAsync(mod: any): mod is IPostAkiLoadModAsync; + isPostSptLoadAsync(mod: any): mod is IPostSptLoadModAsync; /** * Use defined safe guard to check if the mod is a IPostDBLoadModAsync * @returns boolean */ - isPostDBAkiLoadAsync(mod: any): mod is IPostDBLoadModAsync; + isPostDBLoadAsync(mod: any): mod is IPostDBLoadModAsync; /** * Checks for mod to be compatible with 3.X+ * @returns boolean diff --git a/TypeScript/24WebSocket/types/loaders/PostAkiModLoader.d.ts b/TypeScript/24WebSocket/types/loaders/PostAkiModLoader.d.ts deleted file mode 100644 index 8219fc4..0000000 --- a/TypeScript/24WebSocket/types/loaders/PostAkiModLoader.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { DependencyContainer } from "tsyringe"; -import { ModTypeCheck } from "@spt-aki/loaders/ModTypeCheck"; -import { PreAkiModLoader } from "@spt-aki/loaders/PreAkiModLoader"; -import { IModLoader } from "@spt-aki/models/spt/mod/IModLoader"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -export declare class PostAkiModLoader implements IModLoader { - protected logger: ILogger; - protected preAkiModLoader: PreAkiModLoader; - protected localisationService: LocalisationService; - protected modTypeCheck: ModTypeCheck; - protected container: DependencyContainer; - constructor(logger: ILogger, preAkiModLoader: PreAkiModLoader, localisationService: LocalisationService, modTypeCheck: ModTypeCheck); - getModPath(mod: string): string; - load(): Promise; - protected executeModsAsync(): Promise; -} diff --git a/TypeScript/24WebSocket/types/loaders/PostDBModLoader.d.ts b/TypeScript/24WebSocket/types/loaders/PostDBModLoader.d.ts index 1adac53..b0c4bf4 100644 --- a/TypeScript/24WebSocket/types/loaders/PostDBModLoader.d.ts +++ b/TypeScript/24WebSocket/types/loaders/PostDBModLoader.d.ts @@ -1,18 +1,18 @@ import { DependencyContainer } from "tsyringe"; -import { OnLoad } from "@spt-aki/di/OnLoad"; -import { BundleLoader } from "@spt-aki/loaders/BundleLoader"; -import { ModTypeCheck } from "@spt-aki/loaders/ModTypeCheck"; -import { PreAkiModLoader } from "@spt-aki/loaders/PreAkiModLoader"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; +import { OnLoad } from "@spt/di/OnLoad"; +import { BundleLoader } from "@spt/loaders/BundleLoader"; +import { ModTypeCheck } from "@spt/loaders/ModTypeCheck"; +import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { LocalisationService } from "@spt/services/LocalisationService"; export declare class PostDBModLoader implements OnLoad { protected logger: ILogger; protected bundleLoader: BundleLoader; - protected preAkiModLoader: PreAkiModLoader; + protected preSptModLoader: PreSptModLoader; protected localisationService: LocalisationService; protected modTypeCheck: ModTypeCheck; protected container: DependencyContainer; - constructor(logger: ILogger, bundleLoader: BundleLoader, preAkiModLoader: PreAkiModLoader, localisationService: LocalisationService, modTypeCheck: ModTypeCheck); + constructor(logger: ILogger, bundleLoader: BundleLoader, preSptModLoader: PreSptModLoader, localisationService: LocalisationService, modTypeCheck: ModTypeCheck); onLoad(): Promise; getRoute(): string; getModPath(mod: string): string; diff --git a/TypeScript/24WebSocket/types/loaders/PostSptModLoader.d.ts b/TypeScript/24WebSocket/types/loaders/PostSptModLoader.d.ts new file mode 100644 index 0000000..fb54579 --- /dev/null +++ b/TypeScript/24WebSocket/types/loaders/PostSptModLoader.d.ts @@ -0,0 +1,17 @@ +import { DependencyContainer } from "tsyringe"; +import { ModTypeCheck } from "@spt/loaders/ModTypeCheck"; +import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; +import { IModLoader } from "@spt/models/spt/mod/IModLoader"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { LocalisationService } from "@spt/services/LocalisationService"; +export declare class PostSptModLoader implements IModLoader { + protected logger: ILogger; + protected preSptModLoader: PreSptModLoader; + protected localisationService: LocalisationService; + protected modTypeCheck: ModTypeCheck; + protected container: DependencyContainer; + constructor(logger: ILogger, preSptModLoader: PreSptModLoader, localisationService: LocalisationService, modTypeCheck: ModTypeCheck); + getModPath(mod: string): string; + load(): Promise; + protected executeModsAsync(): Promise; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/loaders/PreAkiModLoader.d.ts b/TypeScript/24WebSocket/types/loaders/PreSptModLoader.d.ts similarity index 68% rename from TypeScript/23CustomAbstractChatBot/types/loaders/PreAkiModLoader.d.ts rename to TypeScript/24WebSocket/types/loaders/PreSptModLoader.d.ts index 71fd745..bc846c8 100644 --- a/TypeScript/23CustomAbstractChatBot/types/loaders/PreAkiModLoader.d.ts +++ b/TypeScript/24WebSocket/types/loaders/PreSptModLoader.d.ts @@ -1,36 +1,34 @@ import { DependencyContainer } from "tsyringe"; -import { BundleLoader } from "@spt-aki/loaders/BundleLoader"; -import { ModLoadOrder } from "@spt-aki/loaders/ModLoadOrder"; -import { ModTypeCheck } from "@spt-aki/loaders/ModTypeCheck"; -import { ModDetails } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { ICoreConfig } from "@spt-aki/models/spt/config/ICoreConfig"; -import { IModLoader } from "@spt-aki/models/spt/mod/IModLoader"; -import { IPackageJsonData } from "@spt-aki/models/spt/mod/IPackageJsonData"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { ModCompilerService } from "@spt-aki/services/ModCompilerService"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { VFS } from "@spt-aki/utils/VFS"; -export declare class PreAkiModLoader implements IModLoader { +import { ModLoadOrder } from "@spt/loaders/ModLoadOrder"; +import { ModTypeCheck } from "@spt/loaders/ModTypeCheck"; +import { ModDetails } from "@spt/models/eft/profile/ISptProfile"; +import { ICoreConfig } from "@spt/models/spt/config/ICoreConfig"; +import { IModLoader } from "@spt/models/spt/mod/IModLoader"; +import { IPackageJsonData } from "@spt/models/spt/mod/IPackageJsonData"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { ModCompilerService } from "@spt/services/ModCompilerService"; +import { JsonUtil } from "@spt/utils/JsonUtil"; +import { VFS } from "@spt/utils/VFS"; +export declare class PreSptModLoader implements IModLoader { protected logger: ILogger; protected vfs: VFS; protected jsonUtil: JsonUtil; protected modCompilerService: ModCompilerService; - protected bundleLoader: BundleLoader; protected localisationService: LocalisationService; protected configServer: ConfigServer; protected modLoadOrder: ModLoadOrder; protected modTypeCheck: ModTypeCheck; - protected static container: DependencyContainer; + protected container: DependencyContainer; protected readonly basepath = "user/mods/"; protected readonly modOrderPath = "user/mods/order.json"; protected order: Record; protected imported: Record; - protected akiConfig: ICoreConfig; + protected sptConfig: ICoreConfig; protected serverDependencies: Record; protected skippedMods: Set; - constructor(logger: ILogger, vfs: VFS, jsonUtil: JsonUtil, modCompilerService: ModCompilerService, bundleLoader: BundleLoader, localisationService: LocalisationService, configServer: ConfigServer, modLoadOrder: ModLoadOrder, modTypeCheck: ModTypeCheck); + constructor(logger: ILogger, vfs: VFS, jsonUtil: JsonUtil, modCompilerService: ModCompilerService, localisationService: LocalisationService, configServer: ConfigServer, modLoadOrder: ModLoadOrder, modTypeCheck: ModTypeCheck); load(container: DependencyContainer): Promise; /** * Returns a list of mods with preserved load order @@ -62,16 +60,15 @@ export declare class PreAkiModLoader implements IModLoader { protected getModsPackageData(mods: string[]): Map; /** * Is the passed in mod compatible with the running server version - * @param mod Mod to check compatibiltiy with AKI + * @param mod Mod to check compatibiltiy with SPT * @returns True if compatible */ - protected isModCombatibleWithAki(mod: IPackageJsonData): boolean; + protected isModCombatibleWithSpt(mod: IPackageJsonData): boolean; /** * Execute each mod found in this.imported - * @param container Dependence container to give to mod when it runs * @returns void promise */ - protected executeModsAsync(container: DependencyContainer): Promise; + protected executeModsAsync(): Promise; /** * Read loadorder.json (create if doesnt exist) and return sorted list of mods * @returns string array of sorted mod names diff --git a/TypeScript/24WebSocket/types/models/eft/builds/ISetMagazineRequest.d.ts b/TypeScript/24WebSocket/types/models/eft/builds/ISetMagazineRequest.d.ts index 4b002e8..d3d1479 100644 --- a/TypeScript/24WebSocket/types/models/eft/builds/ISetMagazineRequest.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/builds/ISetMagazineRequest.d.ts @@ -1,4 +1,4 @@ -import { IMagazineTemplateAmmoItem } from "../profile/IAkiProfile"; +import { IMagazineTemplateAmmoItem } from "@spt/models/eft/profile/ISptProfile"; export interface ISetMagazineRequest { Id: string; Name: string; diff --git a/TypeScript/24WebSocket/types/models/eft/common/IGlobals.d.ts b/TypeScript/24WebSocket/types/models/eft/common/IGlobals.d.ts index 2c12570..bfcb920 100644 --- a/TypeScript/24WebSocket/types/models/eft/common/IGlobals.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/common/IGlobals.d.ts @@ -1,5 +1,5 @@ -import { Ixyz } from "@spt-aki/models/eft/common/Ixyz"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; +import { Ixyz } from "@spt/models/eft/common/Ixyz"; +import { Item } from "@spt/models/eft/common/tables/IItem"; export interface IGlobals { time: number; config: IConfig; @@ -31,7 +31,6 @@ export interface IConfig { TradingUnlimitedItems: boolean; MaxLoyaltyLevelForAll: boolean; GlobalLootChanceModifier: number; - GlobalLootChanceModifierPvE: number; GraphicSettings: IGraphicSettings; TimeBeforeDeploy: number; TimeBeforeDeployLocal: number; @@ -49,6 +48,7 @@ export interface IConfig { BotsEnabled: boolean; BufferZone: IBufferZone; ArmorMaterials: IArmorMaterials; + ArenaEftTransferSettings: IArenaEftTransferSettings; LegsOverdamage: number; HandsOverdamage: number; StomachOverdamage: number; @@ -76,6 +76,7 @@ export interface IConfig { SkillPointsBeforeFatigue: number; SkillFatigueReset: number; DiscardLimitsEnabled: boolean; + EnvironmentSettings: IEnvironmentSetting2; EventSettings: IEventSettings; FavoriteItemsSettings: IFavoriteItemsSettings; VaultingSettings: IVaultingSettings; @@ -102,6 +103,12 @@ export interface IConfig { Ballistic: IBallistic; RepairSettings: IRepairSettings; } +export interface IEnvironmentSetting2 { + EnvironmentUIData: IEnvironmentUIData; +} +export interface IEnvironmentUIData { + TheUnheardEditionEnvironmentUiType: string[]; +} export interface IBodyPartColliderSettings { BackHead: IBodyPartColliderPart; Ears: IBodyPartColliderPart; @@ -178,8 +185,12 @@ export interface IItemsCommonSettings { ItemRemoveAfterInterruptionTime: number; } export interface ITradingSettings { + BuyRestrictionMaxBonus: Record; BuyoutRestrictions: IBuyoutRestrictions; } +export interface IBuyRestrictionMaxBonus { + multiplier: number; +} export interface IBuyoutRestrictions { MinDurability: number; MinFoodDrinkResource: number; @@ -381,6 +392,17 @@ export interface IBodyParts { Feet: string; Hands: string; } +export interface IArenaEftTransferSettings { + ArenaEftTransferSettings: ArenaEftTransferSettings; +} +export interface ArenaEftTransferSettings { + ArenaManagerReputationTaxMultiplier: number; + CharismaTaxMultiplier: number; + CreditPriceTaxMultiplier: number; + RubTaxMultiplier: number; + TransferLimitsByGameEdition: Record; + TransferLimitsSettings: Record; +} export interface IArmorMaterials { UHMWPE: IArmorType; Aramid: IArmorType; @@ -994,6 +1016,10 @@ export interface IInsurance { MaxStorageTimeInHour: number; CoefOfSendingMessageTime: number; CoefOfHavingMarkOfUnknown: number; + EditionSendingMessageTime: Record; +} +export interface IMessageSendTImeMultipler { + multiplier: number; } export interface ISkillsSettings { SkillProgressRate: number; @@ -1405,6 +1431,8 @@ export interface IFenceLevel { PriceModTaxi: number; PriceModDelivery: number; PriceModCleanUp: number; + ReactOnMarkOnUnknowns: boolean; + ReactOnMarkOnUnknownsPVE: boolean; DeliveryGridSize: Ixyz; CanInteractWithBtr: boolean; } diff --git a/TypeScript/24WebSocket/types/models/eft/common/ILocation.d.ts b/TypeScript/24WebSocket/types/models/eft/common/ILocation.d.ts index a2ac6d3..b8589c9 100644 --- a/TypeScript/24WebSocket/types/models/eft/common/ILocation.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/common/ILocation.d.ts @@ -1,7 +1,7 @@ -import { Exit, ILocationBase } from "@spt-aki/models/eft/common/ILocationBase"; -import { ILooseLoot } from "@spt-aki/models/eft/common/ILooseLoot"; -import { Ixyz } from "./Ixyz"; -import { Item } from "./tables/IItem"; +import { Exit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; +import { Ixyz } from "@spt/models/eft/common/Ixyz"; +import { Item } from "@spt/models/eft/common/tables/IItem"; export interface ILocation { /** Map meta-data */ base: ILocationBase; diff --git a/TypeScript/24WebSocket/types/models/eft/common/ILocationBase.d.ts b/TypeScript/24WebSocket/types/models/eft/common/ILocationBase.d.ts index 68f37ae..10f1a57 100644 --- a/TypeScript/24WebSocket/types/models/eft/common/ILocationBase.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/common/ILocationBase.d.ts @@ -1,5 +1,5 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; -import { Ixyz } from "@spt-aki/models/eft/common/Ixyz"; +import { MinMax } from "@spt/models/common/MinMax"; +import { Ixyz } from "@spt/models/eft/common/Ixyz"; export interface ILocationBase { AccessKeys: string[]; AirdropParameters: AirdropParameter[]; @@ -196,18 +196,24 @@ export interface Props { export interface Exit { /** % Chance out of 100 exit will appear in raid */ Chance: number; + ChancePVE: number; Count: number; + CountPVE: number; EntryPoints: string; EventAvailable: boolean; ExfiltrationTime: number; + ExfiltrationTimePVE: number; ExfiltrationType: string; RequiredSlot?: string; Id: string; MaxTime: number; + MaxTimePVE: number; MinTime: number; + MinTimePVE: number; Name: string; PassageRequirement: string; PlayersCount: number; + PlayersCountPVE: number; RequirementTip: string; Side?: string; } diff --git a/TypeScript/24WebSocket/types/models/eft/common/ILocationsSourceDestinationBase.d.ts b/TypeScript/24WebSocket/types/models/eft/common/ILocationsSourceDestinationBase.d.ts index 1e8d80c..e6bc8ee 100644 --- a/TypeScript/24WebSocket/types/models/eft/common/ILocationsSourceDestinationBase.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/common/ILocationsSourceDestinationBase.d.ts @@ -1,4 +1,4 @@ -import { ILocations } from "@spt-aki/models/spt/server/ILocations"; +import { ILocations } from "@spt/models/spt/server/ILocations"; export interface ILocationsGenerateAllResponse { locations: ILocations; paths: Path[]; diff --git a/TypeScript/24WebSocket/types/models/eft/common/ILooseLoot.d.ts b/TypeScript/24WebSocket/types/models/eft/common/ILooseLoot.d.ts index 0dce230..b5b538c 100644 --- a/TypeScript/24WebSocket/types/models/eft/common/ILooseLoot.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/common/ILooseLoot.d.ts @@ -1,5 +1,5 @@ -import { Ixyz } from "@spt-aki/models/eft/common/Ixyz"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; +import { Ixyz } from "@spt/models/eft/common/Ixyz"; +import { Item } from "@spt/models/eft/common/tables/IItem"; export interface ILooseLoot { spawnpointCount: SpawnpointCount; spawnpointsForced: SpawnpointsForced[]; diff --git a/TypeScript/24WebSocket/types/models/eft/common/IPmcData.d.ts b/TypeScript/24WebSocket/types/models/eft/common/IPmcData.d.ts index a9594d6..313a92c 100644 --- a/TypeScript/24WebSocket/types/models/eft/common/IPmcData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/common/IPmcData.d.ts @@ -1,4 +1,4 @@ -import { IBotBase, IEftStats } from "@spt-aki/models/eft/common/tables/IBotBase"; +import { IBotBase, IEftStats } from "@spt/models/eft/common/tables/IBotBase"; export interface IPmcData extends IBotBase { } export interface IPostRaidPmcData extends IBotBase { diff --git a/TypeScript/24WebSocket/types/models/eft/common/tables/IAchievement.d.ts b/TypeScript/24WebSocket/types/models/eft/common/tables/IAchievement.d.ts index 910b13d..7669e00 100644 --- a/TypeScript/24WebSocket/types/models/eft/common/tables/IAchievement.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/common/tables/IAchievement.d.ts @@ -1,4 +1,4 @@ -import { IQuestConditionTypes, IQuestRewards } from "./IQuest"; +import { IQuestConditionTypes, IQuestRewards } from "@spt/models/eft/common/tables/IQuest"; export interface IAchievement { id: string; imageUrl: string; diff --git a/TypeScript/24WebSocket/types/models/eft/common/tables/IBotBase.d.ts b/TypeScript/24WebSocket/types/models/eft/common/tables/IBotBase.d.ts index bf7aa6c..a7fe1ca 100644 --- a/TypeScript/24WebSocket/types/models/eft/common/tables/IBotBase.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/common/tables/IBotBase.d.ts @@ -1,11 +1,11 @@ -import { Item, Upd } from "@spt-aki/models/eft/common/tables/IItem"; -import { IPmcDataRepeatableQuest } from "@spt-aki/models/eft/common/tables/IRepeatableQuests"; -import { IRagfairOffer } from "@spt-aki/models/eft/ragfair/IRagfairOffer"; -import { BonusSkillType } from "@spt-aki/models/enums/BonusSkillType"; -import { BonusType } from "@spt-aki/models/enums/BonusType"; -import { HideoutAreas } from "@spt-aki/models/enums/HideoutAreas"; -import { MemberCategory } from "@spt-aki/models/enums/MemberCategory"; -import { QuestStatus } from "@spt-aki/models/enums/QuestStatus"; +import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IPmcDataRepeatableQuest } from "@spt/models/eft/common/tables/IRepeatableQuests"; +import { IRagfairOffer } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { BonusSkillType } from "@spt/models/enums/BonusSkillType"; +import { BonusType } from "@spt/models/enums/BonusType"; +import { HideoutAreas } from "@spt/models/enums/HideoutAreas"; +import { MemberCategory } from "@spt/models/enums/MemberCategory"; +import { QuestStatus } from "@spt/models/enums/QuestStatus"; export interface IBotBase { _id: string; aid: number; @@ -35,9 +35,17 @@ export interface IBotBase { CoopExtractCounts: Record; SurvivorClass: SurvivorClass; WishList: string[]; + moneyTransferLimitData: IMoneyTransferLimits; /** SPT specific property used during bot generation in raid */ sptIsPmc?: boolean; } +export interface IMoneyTransferLimits { + /** TODO: Implement */ + nextResetTime: number; + remainingLimit: number; + totalLimit: number; + resetInterval: number; +} export interface ITaskConditionCounter { id: string; type: string; @@ -74,6 +82,8 @@ export interface Info { BannedUntil: number; IsStreamerModeAvailable: boolean; lastCompletedEvent?: LastCompleted; + SelectedMemberCategory: number; + isMigratedSkills: boolean; } export interface Settings { Role: string; @@ -83,7 +93,7 @@ export interface Settings { AggressorBonus: number; } export interface IBan { - type: BanType; + banType: BanType; dateTime: number; } export declare enum BanType { @@ -107,6 +117,7 @@ export interface Health { Temperature: CurrentMax; BodyParts: BodyPartsHealth; UpdateTime: number; + Immortal?: boolean; } export interface BodyPartsHealth { Head: BodyPartHealth; @@ -163,7 +174,7 @@ export interface Common extends IBaseSkill { export interface Mastering extends IBaseSkill { } export interface Stats { - Eft: IEftStats; + Eft?: IEftStats; } export interface IEftStats { CarriedQuestItems: string[]; diff --git a/TypeScript/24WebSocket/types/models/eft/common/tables/IBotType.d.ts b/TypeScript/24WebSocket/types/models/eft/common/tables/IBotType.d.ts index 2a00af9..074a7d6 100644 --- a/TypeScript/24WebSocket/types/models/eft/common/tables/IBotType.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/common/tables/IBotType.d.ts @@ -1,5 +1,5 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; -import { Skills } from "@spt-aki/models/eft/common/tables/IBotBase"; +import { MinMax } from "@spt/models/common/MinMax"; +import { Skills } from "@spt/models/eft/common/tables/IBotBase"; export interface IBotType { appearance: Appearance; chances: Chances; diff --git a/TypeScript/24WebSocket/types/models/eft/common/tables/ICustomizationItem.d.ts b/TypeScript/24WebSocket/types/models/eft/common/tables/ICustomizationItem.d.ts index 2bab177..3883765 100644 --- a/TypeScript/24WebSocket/types/models/eft/common/tables/ICustomizationItem.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/common/tables/ICustomizationItem.d.ts @@ -1,4 +1,4 @@ -import { Ixyz } from "@spt-aki/models/eft/common/Ixyz"; +import { Ixyz } from "@spt/models/eft/common/Ixyz"; export interface ICustomizationItem { _id: string; _name: string; diff --git a/TypeScript/24WebSocket/types/models/eft/common/tables/IProfileTemplate.d.ts b/TypeScript/24WebSocket/types/models/eft/common/tables/IProfileTemplate.d.ts index dde1a39..20923bc 100644 --- a/TypeScript/24WebSocket/types/models/eft/common/tables/IProfileTemplate.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/common/tables/IProfileTemplate.d.ts @@ -1,10 +1,12 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Dialogue, IUserBuilds } from "@spt-aki/models/eft/profile/IAkiProfile"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Dialogue, IUserBuilds } from "@spt/models/eft/profile/ISptProfile"; export interface IProfileTemplates { "Standard": IProfileSides; "Left Behind": IProfileSides; "Prepare To Escape": IProfileSides; "Edge Of Darkness": IProfileSides; + "Unheard": IProfileSides; + "Tournament": IProfileSides; "SPT Developer": IProfileSides; "SPT Easy start": IProfileSides; "SPT Zero to hero": IProfileSides; @@ -23,9 +25,15 @@ export interface ITemplateSide { } export interface ProfileTraderTemplate { initialLoyaltyLevel: Record; + initialStanding: Record; setQuestsAvailableForStart?: boolean; setQuestsAvailableForFinish?: boolean; - initialStanding: number; initialSalesSum: number; jaegerUnlocked: boolean; + /** How many days is usage of the flea blocked for upon profile creation */ + fleaBlockedDays?: number; + /** What traders default to being locked on profile creation */ + lockedByDefaultOverride?: string[]; + /** What traders should have their clothing unlocked/purchased on creation */ + purchaseAllClothingByDefaultForTrader?: string[]; } diff --git a/TypeScript/24WebSocket/types/models/eft/common/tables/IQuest.d.ts b/TypeScript/24WebSocket/types/models/eft/common/tables/IQuest.d.ts index 74af5ef..54ff191 100644 --- a/TypeScript/24WebSocket/types/models/eft/common/tables/IQuest.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/common/tables/IQuest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { QuestRewardType } from "@spt-aki/models/enums/QuestRewardType"; -import { QuestStatus } from "@spt-aki/models/enums/QuestStatus"; -import { QuestTypeEnum } from "@spt-aki/models/enums/QuestTypeEnum"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { QuestRewardType } from "@spt/models/enums/QuestRewardType"; +import { QuestStatus } from "@spt/models/enums/QuestStatus"; +import { QuestTypeEnum } from "@spt/models/enums/QuestTypeEnum"; export interface IQuest { /** SPT addition - human readable quest name */ QuestName?: string; diff --git a/TypeScript/24WebSocket/types/models/eft/common/tables/IRepeatableQuests.d.ts b/TypeScript/24WebSocket/types/models/eft/common/tables/IRepeatableQuests.d.ts index 854c8ef..0753cff 100644 --- a/TypeScript/24WebSocket/types/models/eft/common/tables/IRepeatableQuests.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/common/tables/IRepeatableQuests.d.ts @@ -1,4 +1,4 @@ -import { IQuest, IQuestConditionTypes, IQuestRewards } from "./IQuest"; +import { IQuest, IQuestConditionTypes, IQuestRewards } from "@spt/models/eft/common/tables/IQuest"; export interface IRepeatableQuest extends IQuest { changeCost: IChangeCost[]; changeStandingCost: number; @@ -18,10 +18,13 @@ export interface IRepeatableTemplates { export interface IPmcDataRepeatableQuest { id?: string; name: string; + unavailableTime?: string; activeQuests: IRepeatableQuest[]; inactiveQuests: IRepeatableQuest[]; endTime: number; changeRequirement: Record; + freeChanges: number; + freeChangesAvailable: number; } export interface IChangeRequirement { changeCost: IChangeCost[]; diff --git a/TypeScript/24WebSocket/types/models/eft/common/tables/ITemplateItem.d.ts b/TypeScript/24WebSocket/types/models/eft/common/tables/ITemplateItem.d.ts index 0871d1a..c5b2da3 100644 --- a/TypeScript/24WebSocket/types/models/eft/common/tables/ITemplateItem.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/common/tables/ITemplateItem.d.ts @@ -1,11 +1,11 @@ -import { Ixyz } from "@spt-aki/models/eft/common/Ixyz"; +import { Ixyz } from "@spt/models/eft/common/Ixyz"; export interface ITemplateItem { _id: string; _name: string; _parent: string; - _type: string; + _type: ItemType; _props: Props; - _proto: string; + _proto?: string; } export interface Props { AllowSpawnOnLocations?: any[]; @@ -37,6 +37,7 @@ export interface Props { IsUngivable?: boolean; IsUnremovable?: boolean; IsLockedafterEquip?: boolean; + IsRagfairCurrency?: boolean; IsSpecialSlotOnly?: boolean; IsStationaryWeapon?: boolean; QuestItem?: boolean; @@ -63,7 +64,7 @@ export interface Props { DiscardingBlock?: boolean; DropSoundType?: string; RagFairCommissionModifier?: number; - RarityPvE: string; + RarityPvE?: string; IsAlwaysAvailableForInsurance?: boolean; DiscardLimit?: number; MaxResource?: number; @@ -354,7 +355,7 @@ export interface Props { casingSounds?: string; ProjectileCount?: number; PenetrationChanceObstacle?: number; - PenetrationDamageMod: number; + PenetrationDamageMod?: number; RicochetChance?: number; FragmentationChance?: number; Deterioration?: number; @@ -414,6 +415,12 @@ export interface Props { LayoutName?: string; Lower75Prefab?: Prefab; MaxUsages?: number; + ScavKillExpPenalty?: number; + ScavKillExpPenaltyPVE?: number; + ScavKillStandingPenalty?: number; + ScavKillStandingPenaltyPVE?: number; + TradersDiscount?: number; + TradersDiscountPVE?: number; } export interface IHealthEffect { type: string; @@ -455,6 +462,7 @@ export interface Slot { } export interface SlotProps { filters: SlotFilter[]; + MaxStackCount?: number; } export interface SlotFilter { Shift?: number; @@ -472,7 +480,7 @@ export interface StackSlot { _max_count: number; _props: StackSlotProps; _proto: string; - upd: any; + upd?: any; } export interface StackSlotProps { filters: SlotFilter[]; @@ -529,3 +537,7 @@ export interface IShotsGroupSettings { ShotRecoilRotationStrength: Ixyz; StartShotIndex: number; } +export declare enum ItemType { + NODE = "Node", + ITEM = "Item" +} diff --git a/TypeScript/24WebSocket/types/models/eft/common/tables/ITrader.d.ts b/TypeScript/24WebSocket/types/models/eft/common/tables/ITrader.d.ts index 38f2a43..14ab409 100644 --- a/TypeScript/24WebSocket/types/models/eft/common/tables/ITrader.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/common/tables/ITrader.d.ts @@ -1,5 +1,5 @@ -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITraderServiceModel } from "@spt-aki/models/spt/services/ITraderServiceModel"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; export interface ITrader { assort?: ITraderAssort; base: ITraderBase; diff --git a/TypeScript/24WebSocket/types/models/eft/dialog/IGetAllAttachmentsResponse.d.ts b/TypeScript/24WebSocket/types/models/eft/dialog/IGetAllAttachmentsResponse.d.ts index 2ddcf83..9bcfead 100644 --- a/TypeScript/24WebSocket/types/models/eft/dialog/IGetAllAttachmentsResponse.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/dialog/IGetAllAttachmentsResponse.d.ts @@ -1,4 +1,4 @@ -import { Message } from "@spt-aki/models/eft/profile/IAkiProfile"; +import { Message } from "@spt/models/eft/profile/ISptProfile"; export interface IGetAllAttachmentsResponse { messages: Message[]; profiles: any[]; diff --git a/TypeScript/24WebSocket/types/models/eft/dialog/IGetFriendListDataResponse.d.ts b/TypeScript/24WebSocket/types/models/eft/dialog/IGetFriendListDataResponse.d.ts index 271be79..a11dbb3 100644 --- a/TypeScript/24WebSocket/types/models/eft/dialog/IGetFriendListDataResponse.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/dialog/IGetFriendListDataResponse.d.ts @@ -1,4 +1,4 @@ -import { IUserDialogInfo } from "@spt-aki/models/eft/profile/IAkiProfile"; +import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; export interface IGetFriendListDataResponse { Friends: IUserDialogInfo[]; Ignore: string[]; diff --git a/TypeScript/24WebSocket/types/models/eft/dialog/IGetMailDialogViewRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/dialog/IGetMailDialogViewRequestData.d.ts index 3a2e349..1d271e4 100644 --- a/TypeScript/24WebSocket/types/models/eft/dialog/IGetMailDialogViewRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/dialog/IGetMailDialogViewRequestData.d.ts @@ -1,4 +1,4 @@ -import { MessageType } from "@spt-aki/models/enums/MessageType"; +import { MessageType } from "@spt/models/enums/MessageType"; export interface IGetMailDialogViewRequestData { type: MessageType; dialogId: string; diff --git a/TypeScript/24WebSocket/types/models/eft/dialog/IGetMailDialogViewResponseData.d.ts b/TypeScript/24WebSocket/types/models/eft/dialog/IGetMailDialogViewResponseData.d.ts index 091c128..ba28910 100644 --- a/TypeScript/24WebSocket/types/models/eft/dialog/IGetMailDialogViewResponseData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/dialog/IGetMailDialogViewResponseData.d.ts @@ -1,4 +1,4 @@ -import { IUserDialogInfo, Message } from "@spt-aki/models/eft/profile/IAkiProfile"; +import { IUserDialogInfo, Message } from "@spt/models/eft/profile/ISptProfile"; export interface IGetMailDialogViewResponseData { messages: Message[]; profiles: IUserDialogInfo[]; diff --git a/TypeScript/24WebSocket/types/models/eft/dialog/ISendMessageRequest.d.ts b/TypeScript/24WebSocket/types/models/eft/dialog/ISendMessageRequest.d.ts index 5a755c0..d94c682 100644 --- a/TypeScript/24WebSocket/types/models/eft/dialog/ISendMessageRequest.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/dialog/ISendMessageRequest.d.ts @@ -1,4 +1,4 @@ -import { MessageType } from "@spt-aki/models/enums/MessageType"; +import { MessageType } from "@spt/models/enums/MessageType"; export interface ISendMessageRequest { dialogId: string; type: MessageType; diff --git a/TypeScript/24WebSocket/types/models/eft/game/ICurrentGroupResponse.d.ts b/TypeScript/24WebSocket/types/models/eft/game/ICurrentGroupResponse.d.ts index 85c005b..eb01946 100644 --- a/TypeScript/24WebSocket/types/models/eft/game/ICurrentGroupResponse.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/game/ICurrentGroupResponse.d.ts @@ -1,4 +1,4 @@ -import { MemberCategory } from "@spt-aki/models/enums/MemberCategory"; +import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface ICurrentGroupResponse { squad: ICurrentGroupSquadMember[]; } diff --git a/TypeScript/24WebSocket/types/models/eft/game/IGameModeRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/game/IGameModeRequestData.d.ts index 618c42d..57ff27b 100644 --- a/TypeScript/24WebSocket/types/models/eft/game/IGameModeRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/game/IGameModeRequestData.d.ts @@ -1,3 +1,3 @@ export interface IGameModeRequestData { - sessionMode: string | null; + sessionMode: string | undefined; } diff --git a/TypeScript/24WebSocket/types/models/eft/game/IGetRaidTimeResponse.d.ts b/TypeScript/24WebSocket/types/models/eft/game/IGetRaidTimeResponse.d.ts index 4dcf0a0..3fd248e 100644 --- a/TypeScript/24WebSocket/types/models/eft/game/IGetRaidTimeResponse.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/game/IGetRaidTimeResponse.d.ts @@ -1,6 +1,6 @@ export interface IGetRaidTimeResponse { RaidTimeMinutes: number; - NewSurviveTimeSeconds: number; + NewSurviveTimeSeconds?: number; OriginalSurvivalTimeSeconds: number; ExitChanges: ExtractChange[]; } diff --git a/TypeScript/24WebSocket/types/models/eft/health/IOffraidEatRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/health/IOffraidEatRequestData.d.ts index 0629f8b..c969b08 100644 --- a/TypeScript/24WebSocket/types/models/eft/health/IOffraidEatRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/health/IOffraidEatRequestData.d.ts @@ -1,4 +1,4 @@ -import { IBaseInteractionRequestData } from "@spt-aki/models/eft/common/request/IBaseInteractionRequestData"; +import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; export interface IOffraidEatRequestData extends IBaseInteractionRequestData { Action: "Eat"; item: string; diff --git a/TypeScript/24WebSocket/types/models/eft/health/IOffraidHealRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/health/IOffraidHealRequestData.d.ts index 47b7929..c2fe7ba 100644 --- a/TypeScript/24WebSocket/types/models/eft/health/IOffraidHealRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/health/IOffraidHealRequestData.d.ts @@ -1,4 +1,4 @@ -import { IBaseInteractionRequestData } from "@spt-aki/models/eft/common/request/IBaseInteractionRequestData"; +import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; export interface IOffraidHealRequestData extends IBaseInteractionRequestData { Action: "Heal"; item: string; diff --git a/TypeScript/24WebSocket/types/models/eft/hideout/IHideoutArea.d.ts b/TypeScript/24WebSocket/types/models/eft/hideout/IHideoutArea.d.ts index 212d2ab..ca0eb07 100644 --- a/TypeScript/24WebSocket/types/models/eft/hideout/IHideoutArea.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/hideout/IHideoutArea.d.ts @@ -1,5 +1,5 @@ -import { BonusSkillType } from "@spt-aki/models/enums/BonusSkillType"; -import { BonusType } from "@spt-aki/models/enums/BonusType"; +import { BonusSkillType } from "@spt/models/enums/BonusSkillType"; +import { BonusType } from "@spt/models/enums/BonusType"; export interface IHideoutArea { _id: string; type: number; diff --git a/TypeScript/24WebSocket/types/models/eft/hideout/IHideoutScavCase.d.ts b/TypeScript/24WebSocket/types/models/eft/hideout/IHideoutScavCase.d.ts index 5c8b983..d081d42 100644 --- a/TypeScript/24WebSocket/types/models/eft/hideout/IHideoutScavCase.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/hideout/IHideoutScavCase.d.ts @@ -1,4 +1,4 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; +import { MinMax } from "@spt/models/common/MinMax"; export interface IHideoutScavCase { _id: string; ProductionTime: number; diff --git a/TypeScript/24WebSocket/types/models/eft/hideout/IQteData.d.ts b/TypeScript/24WebSocket/types/models/eft/hideout/IQteData.d.ts index f7f674e..7f507e1 100644 --- a/TypeScript/24WebSocket/types/models/eft/hideout/IQteData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/hideout/IQteData.d.ts @@ -1,14 +1,14 @@ -import { Effect } from "@spt-aki/models/eft/health/Effect"; -import { BodyPart } from "@spt-aki/models/eft/health/IOffraidHealRequestData"; -import { QteActivityType } from "@spt-aki/models/enums/hideout/QteActivityType"; -import { QteEffectType } from "@spt-aki/models/enums/hideout/QteEffectType"; -import { QteResultType } from "@spt-aki/models/enums/hideout/QteResultType"; -import { QteRewardType } from "@spt-aki/models/enums/hideout/QteRewardType"; -import { QteType } from "@spt-aki/models/enums/hideout/QteType"; -import { RequirementType } from "@spt-aki/models/enums/hideout/RequirementType"; -import { HideoutAreas } from "@spt-aki/models/enums/HideoutAreas"; -import { SkillTypes } from "@spt-aki/models/enums/SkillTypes"; -import { Traders } from "@spt-aki/models/enums/Traders"; +import { Effect } from "@spt/models/eft/health/Effect"; +import { BodyPart } from "@spt/models/eft/health/IOffraidHealRequestData"; +import { QteActivityType } from "@spt/models/enums/hideout/QteActivityType"; +import { QteEffectType } from "@spt/models/enums/hideout/QteEffectType"; +import { QteResultType } from "@spt/models/enums/hideout/QteResultType"; +import { QteRewardType } from "@spt/models/enums/hideout/QteRewardType"; +import { QteType } from "@spt/models/enums/hideout/QteType"; +import { RequirementType } from "@spt/models/enums/hideout/RequirementType"; +import { HideoutAreas } from "@spt/models/enums/HideoutAreas"; +import { SkillTypes } from "@spt/models/enums/SkillTypes"; +import { Traders } from "@spt/models/enums/Traders"; export interface IQteData { id: string; type: QteActivityType; diff --git a/TypeScript/24WebSocket/types/models/eft/httpResponse/INullResponseData.d.ts b/TypeScript/24WebSocket/types/models/eft/httpResponse/INullResponseData.d.ts index a3ae838..26dc461 100644 --- a/TypeScript/24WebSocket/types/models/eft/httpResponse/INullResponseData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/httpResponse/INullResponseData.d.ts @@ -1,5 +1,5 @@ export interface INullResponseData { err: number; errmsg: any; - data: null; + data: undefined; } diff --git a/TypeScript/24WebSocket/types/models/eft/inRaid/IInsuredItemsData.d.ts b/TypeScript/24WebSocket/types/models/eft/inRaid/IInsuredItemsData.d.ts index c49fb79..7ef22ce 100644 --- a/TypeScript/24WebSocket/types/models/eft/inRaid/IInsuredItemsData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inRaid/IInsuredItemsData.d.ts @@ -3,4 +3,5 @@ export interface IInsuredItemsData { durability?: number; maxDurability?: number; hits?: number; + usedInQuest: boolean; } diff --git a/TypeScript/24WebSocket/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts index 451a6f2..a27bfbb 100644 --- a/TypeScript/24WebSocket/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts @@ -1,4 +1,4 @@ -import { Item } from "../common/tables/IItem"; +import { Item } from "@spt/models/eft/common/tables/IItem"; export interface IItemDeliveryRequestData { items: Item[]; traderId: string; diff --git a/TypeScript/24WebSocket/types/models/eft/inRaid/ISaveProgressRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/inRaid/ISaveProgressRequestData.d.ts index c658257..b654088 100644 --- a/TypeScript/24WebSocket/types/models/eft/inRaid/ISaveProgressRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inRaid/ISaveProgressRequestData.d.ts @@ -1,7 +1,7 @@ -import { IPostRaidPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { ISyncHealthRequestData } from "@spt-aki/models/eft/health/ISyncHealthRequestData"; -import { IInsuredItemsData } from "@spt-aki/models/eft/inRaid/IInsuredItemsData"; -import { PlayerRaidEndState } from "@spt-aki/models/enums/PlayerRaidEndState"; +import { IPostRaidPmcData } from "@spt/models/eft/common/IPmcData"; +import { ISyncHealthRequestData } from "@spt/models/eft/health/ISyncHealthRequestData"; +import { IInsuredItemsData } from "@spt/models/eft/inRaid/IInsuredItemsData"; +import { PlayerRaidEndState } from "@spt/models/enums/PlayerRaidEndState"; export interface ISaveProgressRequestData { exit: PlayerRaidEndState; profile: IPostRaidPmcData; diff --git a/TypeScript/24WebSocket/types/models/eft/insurance/IInsureRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/insurance/IInsureRequestData.d.ts index f739ced..e3b018e 100644 --- a/TypeScript/24WebSocket/types/models/eft/insurance/IInsureRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/insurance/IInsureRequestData.d.ts @@ -1,4 +1,4 @@ -import { IBaseInteractionRequestData } from "@spt-aki/models/eft/common/request/IBaseInteractionRequestData"; +import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; export interface IInsureRequestData extends IBaseInteractionRequestData { Action: "Insure"; tid: string; diff --git a/TypeScript/24WebSocket/types/models/eft/inventory/IAddItemDirectRequest.d.ts b/TypeScript/24WebSocket/types/models/eft/inventory/IAddItemDirectRequest.d.ts index 6459a79..1616901 100644 --- a/TypeScript/24WebSocket/types/models/eft/inventory/IAddItemDirectRequest.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inventory/IAddItemDirectRequest.d.ts @@ -1,4 +1,4 @@ -import { Item } from "../common/tables/IItem"; +import { Item } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemDirectRequest { /** Item and child mods to add to player inventory */ itemWithModsToAdd: Item[]; diff --git a/TypeScript/24WebSocket/types/models/eft/inventory/IAddItemTempObject.d.ts b/TypeScript/24WebSocket/types/models/eft/inventory/IAddItemTempObject.d.ts index c818be6..7b3a6ea 100644 --- a/TypeScript/24WebSocket/types/models/eft/inventory/IAddItemTempObject.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inventory/IAddItemTempObject.d.ts @@ -1,4 +1,4 @@ -import { Item, Location } from "@spt-aki/models/eft/common/tables/IItem"; +import { Item, Location } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemTempObject { itemRef: Item; count: number; diff --git a/TypeScript/24WebSocket/types/models/eft/inventory/IAddItemsDirectRequest.d.ts b/TypeScript/24WebSocket/types/models/eft/inventory/IAddItemsDirectRequest.d.ts index c19ba2f..386359e 100644 --- a/TypeScript/24WebSocket/types/models/eft/inventory/IAddItemsDirectRequest.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inventory/IAddItemsDirectRequest.d.ts @@ -1,10 +1,10 @@ -import { Item } from "../common/tables/IItem"; +import { Item } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemsDirectRequest { /** Item and child mods to add to player inventory */ itemsWithModsToAdd: Item[][]; foundInRaid: boolean; /** Runs after EACH item with children is added */ - callback: (buyCount: number) => void; + callback?: (buyCount: number) => void; /** Should sorting table be used when no space found in stash */ useSortingTable: boolean; } diff --git a/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryAddRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryAddRequestData.d.ts index 2b90edb..63c5389 100644 --- a/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryAddRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryAddRequestData.d.ts @@ -1,4 +1,4 @@ -import { Container, IInventoryBaseActionRequestData } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { Container, IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventoryAddRequestData extends IInventoryBaseActionRequestData { Action: "Add"; item: string; diff --git a/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts index 7e67a56..cc7269c 100644 --- a/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts @@ -1,4 +1,4 @@ -import { IBaseInteractionRequestData } from "@spt-aki/models/eft/common/request/IBaseInteractionRequestData"; +import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; export interface IInventoryBaseActionRequestData extends IBaseInteractionRequestData { } export interface To { diff --git a/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryBindRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryBindRequestData.d.ts index efa1a43..5af9fea 100644 --- a/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryBindRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryBindRequestData.d.ts @@ -1,4 +1,4 @@ -import { IInventoryBaseActionRequestData } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventoryBindRequestData extends IInventoryBaseActionRequestData { Action: "Bind"; item: string; diff --git a/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryCreateMarkerRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryCreateMarkerRequestData.d.ts index 805b385..1469136 100644 --- a/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryCreateMarkerRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryCreateMarkerRequestData.d.ts @@ -1,4 +1,4 @@ -import { IInventoryBaseActionRequestData } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventoryCreateMarkerRequestData extends IInventoryBaseActionRequestData { Action: "CreateMapMarker"; item: string; diff --git a/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryDeleteMarkerRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryDeleteMarkerRequestData.d.ts index e85f094..e946f9f 100644 --- a/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryDeleteMarkerRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryDeleteMarkerRequestData.d.ts @@ -1,4 +1,4 @@ -import { IInventoryBaseActionRequestData } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventoryDeleteMarkerRequestData extends IInventoryBaseActionRequestData { Action: "DeleteMapMarker"; item: string; diff --git a/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryEditMarkerRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryEditMarkerRequestData.d.ts index d8080f5..87dcf86 100644 --- a/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryEditMarkerRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryEditMarkerRequestData.d.ts @@ -1,4 +1,4 @@ -import { IInventoryBaseActionRequestData } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventoryEditMarkerRequestData extends IInventoryBaseActionRequestData { Action: "EditMapMarker"; item: string; diff --git a/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryExamineRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryExamineRequestData.d.ts index 07b0c03..58275ba 100644 --- a/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryExamineRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryExamineRequestData.d.ts @@ -1,5 +1,5 @@ -import { OwnerInfo } from "@spt-aki/models/eft/common/request/IBaseInteractionRequestData"; -import { IInventoryBaseActionRequestData } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { OwnerInfo } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; +import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventoryExamineRequestData extends IInventoryBaseActionRequestData { Action: "Examine"; item: string; diff --git a/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryFoldRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryFoldRequestData.d.ts index 7623a90..7937743 100644 --- a/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryFoldRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryFoldRequestData.d.ts @@ -1,4 +1,4 @@ -import { IInventoryBaseActionRequestData } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventoryFoldRequestData extends IInventoryBaseActionRequestData { Action: "Fold"; item: string; diff --git a/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryMergeRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryMergeRequestData.d.ts index af4e722..ad924ba 100644 --- a/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryMergeRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryMergeRequestData.d.ts @@ -1,4 +1,4 @@ -import { IInventoryBaseActionRequestData } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventoryMergeRequestData extends IInventoryBaseActionRequestData { Action: "Merge"; item: string; diff --git a/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryMoveRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryMoveRequestData.d.ts index 9038510..afb6fd0 100644 --- a/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryMoveRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryMoveRequestData.d.ts @@ -1,4 +1,4 @@ -import { IInventoryBaseActionRequestData, To } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { IInventoryBaseActionRequestData, To } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventoryMoveRequestData extends IInventoryBaseActionRequestData { Action: "Move"; item: string; diff --git a/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryReadEncyclopediaRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryReadEncyclopediaRequestData.d.ts index 6432159..ce61370 100644 --- a/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryReadEncyclopediaRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryReadEncyclopediaRequestData.d.ts @@ -1,4 +1,4 @@ -import { IInventoryBaseActionRequestData } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventoryReadEncyclopediaRequestData extends IInventoryBaseActionRequestData { Action: "ReadEncyclopedia"; ids: string[]; diff --git a/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryRemoveRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryRemoveRequestData.d.ts index eda96e6..b9fa232 100644 --- a/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryRemoveRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryRemoveRequestData.d.ts @@ -1,4 +1,4 @@ -import { IInventoryBaseActionRequestData } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventoryRemoveRequestData extends IInventoryBaseActionRequestData { Action: "Remove"; item: string; diff --git a/TypeScript/24WebSocket/types/models/eft/inventory/IInventorySortRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/inventory/IInventorySortRequestData.d.ts index b34bb25..d784c77 100644 --- a/TypeScript/24WebSocket/types/models/eft/inventory/IInventorySortRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inventory/IInventorySortRequestData.d.ts @@ -1,5 +1,5 @@ -import { Upd } from "@spt-aki/models/eft/common/tables/IItem"; -import { IInventoryBaseActionRequestData } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { Upd } from "@spt/models/eft/common/tables/IItem"; +import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventorySortRequestData extends IInventoryBaseActionRequestData { Action: "ApplyInventoryChanges"; changedItems: ChangedItem[]; diff --git a/TypeScript/24WebSocket/types/models/eft/inventory/IInventorySplitRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/inventory/IInventorySplitRequestData.d.ts index 4d29084..a4bb8a4 100644 --- a/TypeScript/24WebSocket/types/models/eft/inventory/IInventorySplitRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inventory/IInventorySplitRequestData.d.ts @@ -1,4 +1,4 @@ -import { Container, IInventoryBaseActionRequestData } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { Container, IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventorySplitRequestData extends IInventoryBaseActionRequestData { Action: "Split"; /** Id of item to split */ diff --git a/TypeScript/24WebSocket/types/models/eft/inventory/IInventorySwapRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/inventory/IInventorySwapRequestData.d.ts index b32a1f7..ccf4796 100644 --- a/TypeScript/24WebSocket/types/models/eft/inventory/IInventorySwapRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inventory/IInventorySwapRequestData.d.ts @@ -1,5 +1,5 @@ -import { OwnerInfo } from "@spt-aki/models/eft/common/request/IBaseInteractionRequestData"; -import { IInventoryBaseActionRequestData, To } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { OwnerInfo } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; +import { IInventoryBaseActionRequestData, To } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventorySwapRequestData extends IInventoryBaseActionRequestData { Action: "Swap"; item: string; diff --git a/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryTagRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryTagRequestData.d.ts index 5d88eaf..5c9f651 100644 --- a/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryTagRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryTagRequestData.d.ts @@ -1,4 +1,4 @@ -import { IInventoryBaseActionRequestData } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventoryTagRequestData extends IInventoryBaseActionRequestData { Action: "Tag"; item: string; diff --git a/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryToggleRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryToggleRequestData.d.ts index 138d987..0d8b1e4 100644 --- a/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryToggleRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryToggleRequestData.d.ts @@ -1,4 +1,4 @@ -import { IInventoryBaseActionRequestData } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventoryToggleRequestData extends IInventoryBaseActionRequestData { Action: "Toggle"; item: string; diff --git a/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryTransferRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryTransferRequestData.d.ts index e98cae6..fe0327d 100644 --- a/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryTransferRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryTransferRequestData.d.ts @@ -1,4 +1,4 @@ -import { IInventoryBaseActionRequestData } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventoryTransferRequestData extends IInventoryBaseActionRequestData { Action: "Transfer"; item: string; diff --git a/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryUnbindRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryUnbindRequestData.d.ts index e303acf..d3a4bd7 100644 --- a/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryUnbindRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryUnbindRequestData.d.ts @@ -1,4 +1,4 @@ -import { IInventoryBaseActionRequestData } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventoryUnbindRequestData extends IInventoryBaseActionRequestData { Action: "Unbind"; item: string; diff --git a/TypeScript/24WebSocket/types/models/eft/inventory/IOpenRandomLootContainerRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/inventory/IOpenRandomLootContainerRequestData.d.ts index a7ec78b..c9b97e0 100644 --- a/TypeScript/24WebSocket/types/models/eft/inventory/IOpenRandomLootContainerRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inventory/IOpenRandomLootContainerRequestData.d.ts @@ -1,4 +1,4 @@ -import { IInventoryBaseActionRequestData } from "@spt-aki/models/eft/inventory/IInventoryBaseActionRequestData"; +import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IOpenRandomLootContainerRequestData extends IInventoryBaseActionRequestData { Action: "OpenRandomLootContainer"; /** Container item id being opened */ diff --git a/TypeScript/24WebSocket/types/models/eft/inventory/IRedeemProfileRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/inventory/IRedeemProfileRequestData.d.ts index d351a8c..d39c9e6 100644 --- a/TypeScript/24WebSocket/types/models/eft/inventory/IRedeemProfileRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inventory/IRedeemProfileRequestData.d.ts @@ -1,4 +1,4 @@ -import { IInventoryBaseActionRequestData } from "./IInventoryBaseActionRequestData"; +import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IRedeemProfileRequestData extends IInventoryBaseActionRequestData { Action: "RedeemProfileReward"; events: IRedeemProfileRequestEvent[]; diff --git a/TypeScript/24WebSocket/types/models/eft/inventory/ISetFavoriteItems.d.ts b/TypeScript/24WebSocket/types/models/eft/inventory/ISetFavoriteItems.d.ts index aacbb39..24aac37 100644 --- a/TypeScript/24WebSocket/types/models/eft/inventory/ISetFavoriteItems.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inventory/ISetFavoriteItems.d.ts @@ -1,4 +1,4 @@ -import { IInventoryBaseActionRequestData } from "./IInventoryBaseActionRequestData"; +import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface ISetFavoriteItems extends IInventoryBaseActionRequestData { Action: "SetFavoriteItems"; items: any[]; diff --git a/TypeScript/24WebSocket/types/models/eft/itemEvent/IEmptyItemEventRouterResponse.d.ts b/TypeScript/24WebSocket/types/models/eft/itemEvent/IEmptyItemEventRouterResponse.d.ts index f81bd59..f9165dc 100644 --- a/TypeScript/24WebSocket/types/models/eft/itemEvent/IEmptyItemEventRouterResponse.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/itemEvent/IEmptyItemEventRouterResponse.d.ts @@ -1,4 +1,4 @@ -import { IItemEventRouterBase } from "@spt-aki/models/eft/itemEvent/IItemEventRouterBase"; +import { IItemEventRouterBase } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; export interface IEmptyItemEventRouterResponse extends IItemEventRouterBase { profileChanges: ""; } diff --git a/TypeScript/24WebSocket/types/models/eft/itemEvent/IItemEventRouterBase.d.ts b/TypeScript/24WebSocket/types/models/eft/itemEvent/IItemEventRouterBase.d.ts index a1babfd..0c48014 100644 --- a/TypeScript/24WebSocket/types/models/eft/itemEvent/IItemEventRouterBase.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/itemEvent/IItemEventRouterBase.d.ts @@ -1,9 +1,9 @@ -import { Health, IQuestStatus, Productive, Skills } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { Item, Upd } from "@spt-aki/models/eft/common/tables/IItem"; -import { IQuest } from "@spt-aki/models/eft/common/tables/IQuest"; -import { IPmcDataRepeatableQuest } from "@spt-aki/models/eft/common/tables/IRepeatableQuests"; -import { IRagfairOffer } from "@spt-aki/models/eft/ragfair/IRagfairOffer"; -import { EquipmentBuildType } from "@spt-aki/models/enums/EquipmentBuildType"; +import { Health, IQuestStatus, Productive, Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IQuest } from "@spt/models/eft/common/tables/IQuest"; +import { IPmcDataRepeatableQuest } from "@spt/models/eft/common/tables/IRepeatableQuests"; +import { IRagfairOffer } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { EquipmentBuildType } from "@spt/models/enums/EquipmentBuildType"; export interface IItemEventRouterBase { warnings: Warning[]; profileChanges: TProfileChanges | ""; diff --git a/TypeScript/24WebSocket/types/models/eft/itemEvent/IItemEventRouterResponse.d.ts b/TypeScript/24WebSocket/types/models/eft/itemEvent/IItemEventRouterResponse.d.ts index bcf26ef..d4913be 100644 --- a/TypeScript/24WebSocket/types/models/eft/itemEvent/IItemEventRouterResponse.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/itemEvent/IItemEventRouterResponse.d.ts @@ -1,4 +1,4 @@ -import { IItemEventRouterBase } from "@spt-aki/models/eft/itemEvent/IItemEventRouterBase"; +import { IItemEventRouterBase } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; /** An object sent back to the game client that contains alterations the client must make to ensure server/client are in sync */ export interface IItemEventRouterResponse extends IItemEventRouterBase { } diff --git a/TypeScript/24WebSocket/types/models/eft/launcher/IChangeRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/launcher/IChangeRequestData.d.ts index b1b3e94..b0431d7 100644 --- a/TypeScript/24WebSocket/types/models/eft/launcher/IChangeRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/launcher/IChangeRequestData.d.ts @@ -1,4 +1,4 @@ -import { ILoginRequestData } from "@spt-aki/models/eft/launcher/ILoginRequestData"; +import { ILoginRequestData } from "@spt/models/eft/launcher/ILoginRequestData"; export interface IChangeRequestData extends ILoginRequestData { change: string; } diff --git a/TypeScript/24WebSocket/types/models/eft/launcher/IMiniProfile.d.ts b/TypeScript/24WebSocket/types/models/eft/launcher/IMiniProfile.d.ts index c12661a..b25a1e7 100644 --- a/TypeScript/24WebSocket/types/models/eft/launcher/IMiniProfile.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/launcher/IMiniProfile.d.ts @@ -7,8 +7,8 @@ export interface IMiniProfile { prevexp: number; nextlvl: number; maxlvl: number; - akiData: AkiData; + sptData: SPTData; } -export interface AkiData { +export interface SPTData { version: string; } diff --git a/TypeScript/24WebSocket/types/models/eft/launcher/IRegisterData.d.ts b/TypeScript/24WebSocket/types/models/eft/launcher/IRegisterData.d.ts index b69d9ed..4a3c15e 100644 --- a/TypeScript/24WebSocket/types/models/eft/launcher/IRegisterData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/launcher/IRegisterData.d.ts @@ -1,4 +1,4 @@ -import { ILoginRequestData } from "@spt-aki/models/eft/launcher/ILoginRequestData"; +import { ILoginRequestData } from "@spt/models/eft/launcher/ILoginRequestData"; export interface IRegisterData extends ILoginRequestData { edition: string; } diff --git a/TypeScript/24WebSocket/types/models/eft/launcher/IRemoveProfileData.d.ts b/TypeScript/24WebSocket/types/models/eft/launcher/IRemoveProfileData.d.ts index 2ad9694..59848ed 100644 --- a/TypeScript/24WebSocket/types/models/eft/launcher/IRemoveProfileData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/launcher/IRemoveProfileData.d.ts @@ -1,2 +1,2 @@ -import { ILoginRequestData } from "@spt-aki/models/eft/launcher/ILoginRequestData"; +import { ILoginRequestData } from "@spt/models/eft/launcher/ILoginRequestData"; export type IRemoveProfileData = ILoginRequestData; diff --git a/TypeScript/24WebSocket/types/models/eft/location/IAirdropLootResult.d.ts b/TypeScript/24WebSocket/types/models/eft/location/IAirdropLootResult.d.ts index 219ee7e..cacc805 100644 --- a/TypeScript/24WebSocket/types/models/eft/location/IAirdropLootResult.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/location/IAirdropLootResult.d.ts @@ -1,4 +1,4 @@ -import { LootItem } from "@spt-aki/models/spt/services/LootItem"; +import { LootItem } from "@spt/models/spt/services/LootItem"; export interface IAirdropLootResult { dropType: string; loot: LootItem[]; diff --git a/TypeScript/24WebSocket/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts index 46cb3d8..959986c 100644 --- a/TypeScript/24WebSocket/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts @@ -1,4 +1,4 @@ -import { IRaidSettings } from "@spt-aki/models/eft/match/IRaidSettings"; +import { IRaidSettings } from "@spt/models/eft/match/IRaidSettings"; export interface IGetRaidConfigurationRequestData extends IRaidSettings { keyId: string; CanShowGroupPreview: boolean; diff --git a/TypeScript/24WebSocket/types/models/eft/match/IGroupCharacter.d.ts b/TypeScript/24WebSocket/types/models/eft/match/IGroupCharacter.d.ts index d539afa..013930a 100644 --- a/TypeScript/24WebSocket/types/models/eft/match/IGroupCharacter.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/match/IGroupCharacter.d.ts @@ -1,5 +1,5 @@ -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { MemberCategory } from "@spt-aki/models/enums/MemberCategory"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IGroupCharacter { _id: string; aid: number; diff --git a/TypeScript/24WebSocket/types/models/eft/match/IMatchGroupCurrentResponse.d.ts b/TypeScript/24WebSocket/types/models/eft/match/IMatchGroupCurrentResponse.d.ts index 7b4ad63..23bcba4 100644 --- a/TypeScript/24WebSocket/types/models/eft/match/IMatchGroupCurrentResponse.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/match/IMatchGroupCurrentResponse.d.ts @@ -1,4 +1,4 @@ -import { IGroupCharacter } from "@spt-aki/models/eft/match/IGroupCharacter"; +import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; export interface IMatchGroupCurrentResponse { squad: IGroupCharacter[]; } diff --git a/TypeScript/24WebSocket/types/models/eft/match/IMatchGroupStartGameRequest.d.ts b/TypeScript/24WebSocket/types/models/eft/match/IMatchGroupStartGameRequest.d.ts index d932de0..663ef1e 100644 --- a/TypeScript/24WebSocket/types/models/eft/match/IMatchGroupStartGameRequest.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/match/IMatchGroupStartGameRequest.d.ts @@ -1,4 +1,4 @@ -import { IServer } from "@spt-aki/models/eft/match/IServer"; +import { IServer } from "@spt/models/eft/match/IServer"; export interface IMatchGroupStartGameRequest { groupId: string; servers: IServer[]; diff --git a/TypeScript/24WebSocket/types/models/eft/match/IMatchGroupStatusRequest.d.ts b/TypeScript/24WebSocket/types/models/eft/match/IMatchGroupStatusRequest.d.ts index c5fc71d..ffac106 100644 --- a/TypeScript/24WebSocket/types/models/eft/match/IMatchGroupStatusRequest.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/match/IMatchGroupStatusRequest.d.ts @@ -1,4 +1,4 @@ -import { RaidMode } from "@spt-aki/models/enums/RaidMode"; +import { RaidMode } from "@spt/models/enums/RaidMode"; export interface IMatchGroupStatusRequest { location: string; savage: boolean; diff --git a/TypeScript/24WebSocket/types/models/eft/match/IMatchGroupStatusResponse.d.ts b/TypeScript/24WebSocket/types/models/eft/match/IMatchGroupStatusResponse.d.ts index c493650..7702ac7 100644 --- a/TypeScript/24WebSocket/types/models/eft/match/IMatchGroupStatusResponse.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/match/IMatchGroupStatusResponse.d.ts @@ -1,4 +1,4 @@ -import { IGroupCharacter } from "@spt-aki/models/eft/match/IGroupCharacter"; +import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; export interface IMatchGroupStatusResponse { players: IGroupCharacter[]; maxPveCountExceeded: boolean; diff --git a/TypeScript/24WebSocket/types/models/eft/match/IProfileStatusResponse.d.ts b/TypeScript/24WebSocket/types/models/eft/match/IProfileStatusResponse.d.ts index ac1a324..8fa6186 100644 --- a/TypeScript/24WebSocket/types/models/eft/match/IProfileStatusResponse.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/match/IProfileStatusResponse.d.ts @@ -1,4 +1,4 @@ -import { ISessionStatus } from "@spt-aki/models/eft/match/ISessionStatus"; +import { ISessionStatus } from "@spt/models/eft/match/ISessionStatus"; export interface IProfileStatusResponse { maxPveCountExceeded: boolean; profiles: ISessionStatus[]; diff --git a/TypeScript/24WebSocket/types/models/eft/match/IRaidSettings.d.ts b/TypeScript/24WebSocket/types/models/eft/match/IRaidSettings.d.ts index 9bf0d42..78a0c19 100644 --- a/TypeScript/24WebSocket/types/models/eft/match/IRaidSettings.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/match/IRaidSettings.d.ts @@ -1,14 +1,14 @@ -import { DateTime } from "@spt-aki/models/enums/DateTime"; -import { PlayersSpawnPlace } from "@spt-aki/models/enums/PlayersSpawnPlace"; -import { RaidMode } from "@spt-aki/models/enums/RaidMode"; -import { BotAmount } from "@spt-aki/models/enums/RaidSettings/BotAmount"; -import { BotDifficulty } from "@spt-aki/models/enums/RaidSettings/BotDifficulty"; -import { CloudinessType } from "@spt-aki/models/enums/RaidSettings/TimeAndWeather/CloudinessType"; -import { FogType } from "@spt-aki/models/enums/RaidSettings/TimeAndWeather/FogType"; -import { RainType } from "@spt-aki/models/enums/RaidSettings/TimeAndWeather/RainType"; -import { TimeFlowType } from "@spt-aki/models/enums/RaidSettings/TimeAndWeather/TimeFlowType"; -import { WindSpeed } from "@spt-aki/models/enums/RaidSettings/TimeAndWeather/WindSpeed"; -import { SideType } from "@spt-aki/models/enums/SideType"; +import { DateTime } from "@spt/models/enums/DateTime"; +import { PlayersSpawnPlace } from "@spt/models/enums/PlayersSpawnPlace"; +import { RaidMode } from "@spt/models/enums/RaidMode"; +import { BotAmount } from "@spt/models/enums/RaidSettings/BotAmount"; +import { BotDifficulty } from "@spt/models/enums/RaidSettings/BotDifficulty"; +import { CloudinessType } from "@spt/models/enums/RaidSettings/TimeAndWeather/CloudinessType"; +import { FogType } from "@spt/models/enums/RaidSettings/TimeAndWeather/FogType"; +import { RainType } from "@spt/models/enums/RaidSettings/TimeAndWeather/RainType"; +import { TimeFlowType } from "@spt/models/enums/RaidSettings/TimeAndWeather/TimeFlowType"; +import { WindSpeed } from "@spt/models/enums/RaidSettings/TimeAndWeather/WindSpeed"; +import { SideType } from "@spt/models/enums/SideType"; export interface IRaidSettings { location: string; timeVariant: DateTime; diff --git a/TypeScript/24WebSocket/types/models/eft/notes/INoteActionData.d.ts b/TypeScript/24WebSocket/types/models/eft/notes/INoteActionData.d.ts index 97575be..344c40d 100644 --- a/TypeScript/24WebSocket/types/models/eft/notes/INoteActionData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/notes/INoteActionData.d.ts @@ -1,4 +1,4 @@ -import { IBaseInteractionRequestData } from "@spt-aki/models/eft/common/request/IBaseInteractionRequestData"; +import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; export interface INoteActionData extends IBaseInteractionRequestData { Action: string; index: number; diff --git a/TypeScript/24WebSocket/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts index cbda924..f1123c1 100644 --- a/TypeScript/24WebSocket/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts @@ -1,4 +1,4 @@ -import { Skills } from "@spt-aki/models/eft/common/tables/IBotBase"; +import { Skills } from "@spt/models/eft/common/tables/IBotBase"; export interface IPlayerIncrementSkillLevelRequestData { _id: string; experience: number; diff --git a/TypeScript/24WebSocket/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts index 3ce8733..3cb8533 100644 --- a/TypeScript/24WebSocket/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; +import { Item } from "@spt/models/eft/common/tables/IItem"; export interface IPresetBuildActionRequestData { Action: string; Id: string; diff --git a/TypeScript/24WebSocket/types/models/eft/profile/IGetAchievementsResponse.d.ts b/TypeScript/24WebSocket/types/models/eft/profile/IGetAchievementsResponse.d.ts index a5a43cb..6963fcf 100644 --- a/TypeScript/24WebSocket/types/models/eft/profile/IGetAchievementsResponse.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/profile/IGetAchievementsResponse.d.ts @@ -1,4 +1,4 @@ -import { IAchievement } from "../common/tables/IAchievement"; +import { IAchievement } from "@spt/models/eft/common/tables/IAchievement"; export interface IGetAchievementsResponse { elements: IAchievement[]; } diff --git a/TypeScript/24WebSocket/types/models/eft/profile/IGetOtherProfileResponse.d.ts b/TypeScript/24WebSocket/types/models/eft/profile/IGetOtherProfileResponse.d.ts index 26e43ac..7df4eba 100644 --- a/TypeScript/24WebSocket/types/models/eft/profile/IGetOtherProfileResponse.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/profile/IGetOtherProfileResponse.d.ts @@ -1,5 +1,5 @@ -import { OverallCounters, Skills } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; +import { OverallCounters, Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { Item } from "@spt/models/eft/common/tables/IItem"; export interface IGetOtherProfileResponse { id: string; aid: number; diff --git a/TypeScript/24WebSocket/types/models/eft/profile/IGetProfileSettingsRequest.d.ts b/TypeScript/24WebSocket/types/models/eft/profile/IGetProfileSettingsRequest.d.ts index 8168615..1141522 100644 --- a/TypeScript/24WebSocket/types/models/eft/profile/IGetProfileSettingsRequest.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/profile/IGetProfileSettingsRequest.d.ts @@ -1,3 +1,5 @@ export interface IGetProfileSettingsRequest { + /** Chosen value for profile.Info.SelectedMemberCategory */ + memberCategory: number; squadInviteRestriction: boolean; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/IAkiProfile.d.ts b/TypeScript/24WebSocket/types/models/eft/profile/ISptProfile.d.ts similarity index 63% rename from TypeScript/23CustomAbstractChatBot/types/models/eft/profile/IAkiProfile.d.ts rename to TypeScript/24WebSocket/types/models/eft/profile/ISptProfile.d.ts index 78302ee..a8e742a 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/IAkiProfile.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/profile/ISptProfile.d.ts @@ -1,29 +1,33 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { EquipmentBuildType } from "@spt-aki/models/enums/EquipmentBuildType"; -import { MemberCategory } from "@spt-aki/models/enums/MemberCategory"; -import { MessageType } from "@spt-aki/models/enums/MessageType"; -import { IProfileChangeEvent } from "@spt-aki/models/spt/dialog/ISendMessageDetails"; -export interface IAkiProfile { +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { EquipmentBuildType } from "@spt/models/enums/EquipmentBuildType"; +import { MemberCategory } from "@spt/models/enums/MemberCategory"; +import { MessageType } from "@spt/models/enums/MessageType"; +import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails"; +export interface ISptProfile { info: Info; characters: Characters; /** Clothing purchases */ suits: string[]; userbuilds: IUserBuilds; dialogues: Record; - aki: Aki; + spt: Spt; vitality: Vitality; inraid: Inraid; insurance: Insurance[]; /** Assort purchases made by player since last trader refresh */ traderPurchases?: Record>; + /** Achievements earned by player */ + achievements: Record; } export declare class TraderPurchaseData { count: number; purchaseTimestamp: number; } export interface Info { + /** main profile id */ id: string; + scavId: string; aid: number; username: string; password: string; @@ -34,44 +38,62 @@ export interface Characters { pmc: IPmcData; scav: IPmcData; } +/** used by profile.userbuilds */ export interface IUserBuilds { weaponBuilds: IWeaponBuild[]; equipmentBuilds: IEquipmentBuild[]; + magazineBuilds: IMagazineBuild[]; } -export interface IWeaponBuild { - id: string; - name: string; - root: string; - items: Item[]; - type: string; +export interface IUserBuild { + Id: string; + Name: string; } -export interface IEquipmentBuild { - id: string; - name: string; - root: string; - items: Item[]; +export interface IWeaponBuild extends IUserBuild { + Root: string; + Items: Item[]; +} +export interface IEquipmentBuild extends IUserBuild { + Root: string; + Items: Item[]; + BuildType: EquipmentBuildType; +} +export interface IMagazineBuild extends IUserBuild { + Caliber: string; + TopCount: number; + BottomCount: number; + Items: IMagazineTemplateAmmoItem[]; +} +export interface IMagazineTemplateAmmoItem { + TemplateId: string; + Count: number; +} +/** Used by defaultEquipmentPresets.json */ +export interface IDefaultEquipmentPreset extends IUserBuild { + Items: Item[]; + Root: string; + BuildType: EquipmentBuildType; type: string; - fastPanel: Record; - buildType: EquipmentBuildType; } export interface Dialogue { attachmentsNew: number; - type: MessageType; new: number; - _id: string; + type: MessageType; Users?: IUserDialogInfo[]; pinned: boolean; messages: Message[]; + _id: string; } export interface IUserDialogInfo { _id: string; - info: IUserDialogDetails; + aid: number; + Info?: IUserDialogDetails; } export interface IUserDialogDetails { Nickname: string; Side: string; Level: number; MemberCategory: MemberCategory; + SelectedMemberCategory: MemberCategory; } export interface DialogueInfo { attachmentsNew: number; @@ -91,6 +113,7 @@ export interface Message { Member?: IUpdatableChatMember; templateId?: string; text?: string; + replyTo?: IReplyTo; hasRewards?: boolean; rewardCollected: boolean; items?: MessageItems; @@ -98,6 +121,13 @@ export interface Message { systemData?: ISystemData; profileChangeEvents?: IProfileChangeEvent[]; } +export interface IReplyTo { + _id: string; + uid: string; + type: MessageType; + dt: number; + text?: string; +} export interface MessagePreview { uid: string; type: MessageType; @@ -130,20 +160,29 @@ export interface DateTime { date: string; time: string; } -export interface Aki { +export interface Spt { + /** What version of SPT was this profile made with */ version: string; + /** What mods has this profile loaded at any point in time */ mods?: ModDetails[]; + /** What gifts has this profile received and how many */ receivedGifts: ReceivedGift[]; + /** item TPLs blacklisted from being sold on flea for this profile */ + blacklistedItemTpls?: string[]; + /** key: daily type */ + freeRepeatableRefreshUsedCount: Record; } export interface ModDetails { name: string; version: string; author: string; dateAdded: number; + url: string; } export interface ReceivedGift { giftId: string; - timestampAccepted: number; + timestampLastAccepted: number; + current: number; } export interface Vitality { health: Health; @@ -195,18 +234,12 @@ export interface Inraid { export interface Insurance { scheduledTime: number; traderId: string; - messageContent: MessageContent; + maxStorageTime: number; + systemData: ISystemData; + messageType: MessageType; + messageTemplateId: string; items: Item[]; } -export interface MessageContent { - ragfair?: MessageContentRagfair; - text?: string; - templateId: string; - type: MessageType; - maxStorageTime?: number; - profileChangeEvents?: any[]; - systemData?: ISystemData; -} export interface MessageContentRagfair { offerId: string; count: number; diff --git a/TypeScript/24WebSocket/types/models/eft/ragfair/IGetItemPriceResult.d.ts b/TypeScript/24WebSocket/types/models/eft/ragfair/IGetItemPriceResult.d.ts index e692b1b..a81eee6 100644 --- a/TypeScript/24WebSocket/types/models/eft/ragfair/IGetItemPriceResult.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/ragfair/IGetItemPriceResult.d.ts @@ -1,4 +1,4 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; +import { MinMax } from "@spt/models/common/MinMax"; export interface IGetItemPriceResult extends MinMax { avg: number; } diff --git a/TypeScript/24WebSocket/types/models/eft/ragfair/IGetOffersResult.d.ts b/TypeScript/24WebSocket/types/models/eft/ragfair/IGetOffersResult.d.ts index 8b753ae..f3420fa 100644 --- a/TypeScript/24WebSocket/types/models/eft/ragfair/IGetOffersResult.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/ragfair/IGetOffersResult.d.ts @@ -1,4 +1,4 @@ -import { IRagfairOffer } from "@spt-aki/models/eft/ragfair/IRagfairOffer"; +import { IRagfairOffer } from "@spt/models/eft/ragfair/IRagfairOffer"; export interface IGetOffersResult { categories?: Record; offers: IRagfairOffer[]; diff --git a/TypeScript/24WebSocket/types/models/eft/ragfair/IRagfairOffer.d.ts b/TypeScript/24WebSocket/types/models/eft/ragfair/IRagfairOffer.d.ts index 043a986..eeeb79d 100644 --- a/TypeScript/24WebSocket/types/models/eft/ragfair/IRagfairOffer.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/ragfair/IRagfairOffer.d.ts @@ -1,5 +1,5 @@ -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { MemberCategory } from "@spt-aki/models/enums/MemberCategory"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IRagfairOffer { sellResult?: SellResult[]; _id: string; @@ -9,23 +9,20 @@ export interface IRagfairOffer { intId: number; /** Handbook price */ itemsCost: number; - /** Rouble price */ + /** Rouble price per item */ requirementsCost: number; startTime: number; endTime: number; sellInOnePiece: boolean; + /** Rouble price - same as requirementsCost */ + summaryCost: number; + user: IRagfairOfferUser; + /** Trader only */ + unlimitedCount?: boolean; loyaltyLevel: number; buyRestrictionMax?: number; buyRestrictionCurrent?: number; - locked: boolean; - unlimitedCount: boolean; - /** Rouble price */ - summaryCost: number; - user: IRagfairOfferUser; - notAvailable: boolean; - /** TODO - implement this value - not currently used */ - CurrentItemCount: number; - priority: boolean; + locked?: boolean; } export interface OfferRequirement { _tpl: string; @@ -37,8 +34,10 @@ export interface IRagfairOfferUser { nickname?: string; rating?: number; memberType: MemberCategory; + selectedMemberCategory?: MemberCategory; avatar?: string; isRatingGrowing?: boolean; + aid?: number; } export interface SellResult { sellTime: number; diff --git a/TypeScript/24WebSocket/types/models/eft/ragfair/ISearchRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/ragfair/ISearchRequestData.d.ts index 52cb2d4..8261c5b 100644 --- a/TypeScript/24WebSocket/types/models/eft/ragfair/ISearchRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/ragfair/ISearchRequestData.d.ts @@ -1,4 +1,4 @@ -import { RagfairSort } from "@spt-aki/models/enums/RagfairSort"; +import { RagfairSort } from "@spt/models/enums/RagfairSort"; export interface ISearchRequestData { page: number; limit: number; diff --git a/TypeScript/24WebSocket/types/models/eft/repair/IRepairActionDataRequest.d.ts b/TypeScript/24WebSocket/types/models/eft/repair/IRepairActionDataRequest.d.ts index ceb3f7c..d51c1b9 100644 --- a/TypeScript/24WebSocket/types/models/eft/repair/IRepairActionDataRequest.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/repair/IRepairActionDataRequest.d.ts @@ -1,4 +1,4 @@ -import { IBaseRepairActionDataRequest } from "@spt-aki/models/eft/repair/IBaseRepairActionDataRequest"; +import { IBaseRepairActionDataRequest } from "@spt/models/eft/repair/IBaseRepairActionDataRequest"; export interface IRepairActionDataRequest extends IBaseRepairActionDataRequest { Action: "Repair"; repairKitsInfo: RepairKitsInfo[]; diff --git a/TypeScript/24WebSocket/types/models/eft/repair/ITraderRepairActionDataRequest.d.ts b/TypeScript/24WebSocket/types/models/eft/repair/ITraderRepairActionDataRequest.d.ts index 82b83c6..50f308e 100644 --- a/TypeScript/24WebSocket/types/models/eft/repair/ITraderRepairActionDataRequest.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/repair/ITraderRepairActionDataRequest.d.ts @@ -1,4 +1,4 @@ -import { IBaseRepairActionDataRequest } from "@spt-aki/models/eft/repair/IBaseRepairActionDataRequest"; +import { IBaseRepairActionDataRequest } from "@spt/models/eft/repair/IBaseRepairActionDataRequest"; export interface ITraderRepairActionDataRequest extends IBaseRepairActionDataRequest { Action: "TraderRepair"; tid: string; diff --git a/TypeScript/24WebSocket/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts index 15813c1..d64b2c9 100644 --- a/TypeScript/24WebSocket/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts @@ -1,4 +1,4 @@ -import { IProcessBaseTradeRequestData } from "@spt-aki/models/eft/trade/IProcessBaseTradeRequestData"; +import { IProcessBaseTradeRequestData } from "@spt/models/eft/trade/IProcessBaseTradeRequestData"; export interface IProcessBuyTradeRequestData extends IProcessBaseTradeRequestData { Action: "buy_from_trader" | "TradingConfirm" | "RestoreHealth" | "SptInsure" | "SptRepair" | ""; type: string; diff --git a/TypeScript/24WebSocket/types/models/eft/trade/IProcessSellTradeRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/trade/IProcessSellTradeRequestData.d.ts index c0f91a0..459bd28 100644 --- a/TypeScript/24WebSocket/types/models/eft/trade/IProcessSellTradeRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/trade/IProcessSellTradeRequestData.d.ts @@ -1,4 +1,4 @@ -import { IProcessBaseTradeRequestData } from "@spt-aki/models/eft/trade/IProcessBaseTradeRequestData"; +import { IProcessBaseTradeRequestData } from "@spt/models/eft/trade/IProcessBaseTradeRequestData"; export interface IProcessSellTradeRequestData extends IProcessBaseTradeRequestData { Action: "sell_to_trader"; type: string; diff --git a/TypeScript/24WebSocket/types/models/eft/trade/ISellScavItemsToFenceRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/trade/ISellScavItemsToFenceRequestData.d.ts index 0101dc1..3727ce4 100644 --- a/TypeScript/24WebSocket/types/models/eft/trade/ISellScavItemsToFenceRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/trade/ISellScavItemsToFenceRequestData.d.ts @@ -1,4 +1,4 @@ -import { OwnerInfo } from "@spt-aki/models/eft/common/request/IBaseInteractionRequestData"; +import { OwnerInfo } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; export interface ISellScavItemsToFenceRequestData { Action: "SellAllFromSavage"; totalValue: number; diff --git a/TypeScript/24WebSocket/types/models/eft/weather/IWeatherData.d.ts b/TypeScript/24WebSocket/types/models/eft/weather/IWeatherData.d.ts index 59a63fc..81bc746 100644 --- a/TypeScript/24WebSocket/types/models/eft/weather/IWeatherData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/weather/IWeatherData.d.ts @@ -1,5 +1,5 @@ -import { Season } from "@spt-aki/models/enums/Season"; -import { WindDirection } from "@spt-aki/models/enums/WindDirection"; +import { Season } from "@spt/models/enums/Season"; +import { WindDirection } from "@spt/models/enums/WindDirection"; export interface IWeatherData { acceleration: number; time: string; diff --git a/TypeScript/24WebSocket/types/models/eft/ws/IWsAid.d.ts b/TypeScript/24WebSocket/types/models/eft/ws/IWsAid.d.ts index d053788..310d507 100644 --- a/TypeScript/24WebSocket/types/models/eft/ws/IWsAid.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/ws/IWsAid.d.ts @@ -1,4 +1,4 @@ -import { IWsNotificationEvent } from "@spt-aki/models/eft/ws/IWsNotificationEvent"; +import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; export interface IWsAid extends IWsNotificationEvent { aid: number; } diff --git a/TypeScript/24WebSocket/types/models/eft/ws/IWsAidNickname.d.ts b/TypeScript/24WebSocket/types/models/eft/ws/IWsAidNickname.d.ts index 82e91ac..e623b19 100644 --- a/TypeScript/24WebSocket/types/models/eft/ws/IWsAidNickname.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/ws/IWsAidNickname.d.ts @@ -1,4 +1,4 @@ -import { IWsNotificationEvent } from "@spt-aki/models/eft/ws/IWsNotificationEvent"; +import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; export interface IWsAidNickname extends IWsNotificationEvent { aid: number; Nickname: string; diff --git a/TypeScript/24WebSocket/types/models/eft/ws/IWsChatMessageReceived.d.ts b/TypeScript/24WebSocket/types/models/eft/ws/IWsChatMessageReceived.d.ts index 74f9d0c..302d8f1 100644 --- a/TypeScript/24WebSocket/types/models/eft/ws/IWsChatMessageReceived.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/ws/IWsChatMessageReceived.d.ts @@ -1,6 +1,6 @@ -import { Message } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { IWsNotificationEvent } from "@spt-aki/models/eft/ws/IWsNotificationEvent"; -import { IGroupCharacter } from "../match/IGroupCharacter"; +import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; +import { Message } from "@spt/models/eft/profile/ISptProfile"; +import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; export interface IWsChatMessageReceived extends IWsNotificationEvent { dialogId: string; message: Message; diff --git a/TypeScript/24WebSocket/types/models/eft/ws/IWsGroupId.d.ts b/TypeScript/24WebSocket/types/models/eft/ws/IWsGroupId.d.ts index 2bab478..62a8c6f 100644 --- a/TypeScript/24WebSocket/types/models/eft/ws/IWsGroupId.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/ws/IWsGroupId.d.ts @@ -1,4 +1,4 @@ -import { IWsNotificationEvent } from "@spt-aki/models/eft/ws/IWsNotificationEvent"; +import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; export interface IWsGroupId extends IWsNotificationEvent { groupId: string; } diff --git a/TypeScript/24WebSocket/types/models/eft/ws/IWsGroupMatchInviteAccept.d.ts b/TypeScript/24WebSocket/types/models/eft/ws/IWsGroupMatchInviteAccept.d.ts index db30348..8f100ac 100644 --- a/TypeScript/24WebSocket/types/models/eft/ws/IWsGroupMatchInviteAccept.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/ws/IWsGroupMatchInviteAccept.d.ts @@ -1,4 +1,4 @@ -import { IWsNotificationEvent } from "@spt-aki/models/eft/ws/IWsNotificationEvent"; -import { IGroupCharacter } from "../match/IGroupCharacter"; +import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; +import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; export interface IWsGroupMatchInviteAccept extends IWsNotificationEvent, IGroupCharacter { } diff --git a/TypeScript/24WebSocket/types/models/eft/ws/IWsGroupMatchInviteDecline.d.ts b/TypeScript/24WebSocket/types/models/eft/ws/IWsGroupMatchInviteDecline.d.ts index 368b945..cf15409 100644 --- a/TypeScript/24WebSocket/types/models/eft/ws/IWsGroupMatchInviteDecline.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/ws/IWsGroupMatchInviteDecline.d.ts @@ -1,4 +1,4 @@ -import { IWsNotificationEvent } from "@spt-aki/models/eft/ws/IWsNotificationEvent"; +import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; export interface IWsGroupMatchInviteDecline extends IWsNotificationEvent { aid: number; Nickname: string; diff --git a/TypeScript/24WebSocket/types/models/eft/ws/IWsGroupMatchInviteSend.d.ts b/TypeScript/24WebSocket/types/models/eft/ws/IWsGroupMatchInviteSend.d.ts index 32174fd..b52a49c 100644 --- a/TypeScript/24WebSocket/types/models/eft/ws/IWsGroupMatchInviteSend.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/ws/IWsGroupMatchInviteSend.d.ts @@ -1,5 +1,5 @@ -import { IGroupCharacter } from "@spt-aki/models/eft/match/IGroupCharacter"; -import { IWsNotificationEvent } from "@spt-aki/models/eft/ws/IWsNotificationEvent"; +import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; +import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; export interface IWsGroupMatchInviteSend extends IWsNotificationEvent { requestId: string; from: number; diff --git a/TypeScript/24WebSocket/types/models/eft/ws/IWsGroupMatchLeaderChanged.d.ts b/TypeScript/24WebSocket/types/models/eft/ws/IWsGroupMatchLeaderChanged.d.ts index 73e88cd..a374183 100644 --- a/TypeScript/24WebSocket/types/models/eft/ws/IWsGroupMatchLeaderChanged.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/ws/IWsGroupMatchLeaderChanged.d.ts @@ -1,4 +1,4 @@ -import { IWsNotificationEvent } from "@spt-aki/models/eft/ws/IWsNotificationEvent"; +import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; export interface IWsGroupMatchLeaderChanged extends IWsNotificationEvent { owner: number; } diff --git a/TypeScript/24WebSocket/types/models/eft/ws/IWsGroupMatchRaidReady.d.ts b/TypeScript/24WebSocket/types/models/eft/ws/IWsGroupMatchRaidReady.d.ts index 1d9f604..ab76918 100644 --- a/TypeScript/24WebSocket/types/models/eft/ws/IWsGroupMatchRaidReady.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/ws/IWsGroupMatchRaidReady.d.ts @@ -1,5 +1,5 @@ -import { IGroupCharacter } from "@spt-aki/models/eft/match/IGroupCharacter"; -import { IWsNotificationEvent } from "@spt-aki/models/eft/ws/IWsNotificationEvent"; +import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; +import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; export interface IWsGroupMatchRaidReady extends IWsNotificationEvent { extendedProfile: IGroupCharacter; } diff --git a/TypeScript/24WebSocket/types/models/eft/ws/IWsGroupMatchRaidSettings.d.ts b/TypeScript/24WebSocket/types/models/eft/ws/IWsGroupMatchRaidSettings.d.ts index f323220..5fa52af 100644 --- a/TypeScript/24WebSocket/types/models/eft/ws/IWsGroupMatchRaidSettings.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/ws/IWsGroupMatchRaidSettings.d.ts @@ -1,5 +1,5 @@ -import { IRaidSettings } from "@spt-aki/models/eft/match/IRaidSettings"; -import { IWsNotificationEvent } from "@spt-aki/models/eft/ws/IWsNotificationEvent"; +import { IRaidSettings } from "@spt/models/eft/match/IRaidSettings"; +import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; export interface IWsGroupMatchRaidSettings extends IWsNotificationEvent { raidSettings: IRaidSettings; } diff --git a/TypeScript/24WebSocket/types/models/eft/ws/IWsPing.d.ts b/TypeScript/24WebSocket/types/models/eft/ws/IWsPing.d.ts index a7bb0ea..d43aa03 100644 --- a/TypeScript/24WebSocket/types/models/eft/ws/IWsPing.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/ws/IWsPing.d.ts @@ -1,3 +1,3 @@ -import { IWsNotificationEvent } from "@spt-aki/models/eft/ws/IWsNotificationEvent"; +import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; export interface IWsPing extends IWsNotificationEvent { } diff --git a/TypeScript/24WebSocket/types/models/eft/ws/IWsRagfairOfferSold.d.ts b/TypeScript/24WebSocket/types/models/eft/ws/IWsRagfairOfferSold.d.ts index 5f251e9..1c4c88e 100644 --- a/TypeScript/24WebSocket/types/models/eft/ws/IWsRagfairOfferSold.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/ws/IWsRagfairOfferSold.d.ts @@ -1,4 +1,4 @@ -import { IWsNotificationEvent } from "@spt-aki/models/eft/ws/IWsNotificationEvent"; +import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; export interface IWsRagfairOfferSold extends IWsNotificationEvent { offerId: string; count: number; diff --git a/TypeScript/24WebSocket/types/models/eft/ws/IWsUserConfirmed.d.ts b/TypeScript/24WebSocket/types/models/eft/ws/IWsUserConfirmed.d.ts index dd6f5fd..ac32e0d 100644 --- a/TypeScript/24WebSocket/types/models/eft/ws/IWsUserConfirmed.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/ws/IWsUserConfirmed.d.ts @@ -1,6 +1,6 @@ -import { IWsNotificationEvent } from "@spt-aki/models/eft/ws/IWsNotificationEvent"; -import { ProfileStatus } from "@spt-aki/models/enums/ProfileStatus"; -import { RaidMode } from "@spt-aki/models/enums/RaidMode"; +import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; +import { ProfileStatus } from "@spt/models/enums/ProfileStatus"; +import { RaidMode } from "@spt/models/enums/RaidMode"; export interface IWsUserConfirmed extends IWsNotificationEvent { profileid: string; profileToken: string; diff --git a/TypeScript/24WebSocket/types/models/enums/BaseClasses.d.ts b/TypeScript/24WebSocket/types/models/enums/BaseClasses.d.ts index d98a58f..65fc95e 100644 --- a/TypeScript/24WebSocket/types/models/enums/BaseClasses.d.ts +++ b/TypeScript/24WebSocket/types/models/enums/BaseClasses.d.ts @@ -69,8 +69,6 @@ export declare enum BaseClasses { STATIONARY_CONTAINER = "567583764bdc2d98058b456e", POCKETS = "557596e64bdc2dc2118b4571", ARMBAND = "5b3f15d486f77432d0509248", - DOG_TAG_USEC = "59f32c3b86f77472a31742f0", - DOG_TAG_BEAR = "59f32bb586f774757e1e8442", JEWELRY = "57864a3d24597754843f8721", ELECTRONICS = "57864a66245977548f04a81f", BUILDING_MATERIAL = "57864ada245977548638de91", diff --git a/TypeScript/24WebSocket/types/models/enums/ConfigTypes.d.ts b/TypeScript/24WebSocket/types/models/enums/ConfigTypes.d.ts index bf97c40..646fd55 100644 --- a/TypeScript/24WebSocket/types/models/enums/ConfigTypes.d.ts +++ b/TypeScript/24WebSocket/types/models/enums/ConfigTypes.d.ts @@ -1,29 +1,29 @@ export declare enum ConfigTypes { - AIRDROP = "aki-airdrop", - BOT = "aki-bot", - PMC = "aki-pmc", - CORE = "aki-core", - HEALTH = "aki-health", - HIDEOUT = "aki-hideout", - HTTP = "aki-http", - IN_RAID = "aki-inraid", - INSURANCE = "aki-insurance", - INVENTORY = "aki-inventory", - ITEM = "aki-item", - LOCALE = "aki-locale", - LOCATION = "aki-location", - LOOT = "aki-loot", - MATCH = "aki-match", - PLAYERSCAV = "aki-playerscav", - PMC_CHAT_RESPONSE = "aki-pmcchatresponse", - QUEST = "aki-quest", - RAGFAIR = "aki-ragfair", - REPAIR = "aki-repair", - SCAVCASE = "aki-scavcase", - TRADER = "aki-trader", - WEATHER = "aki-weather", - SEASONAL_EVENT = "aki-seasonalevents", - LOST_ON_DEATH = "aki-lostondeath", - GIFTS = "aki-gifts", - BTR = "aki-btr" + AIRDROP = "spt-airdrop", + BOT = "spt-bot", + PMC = "spt-pmc", + CORE = "spt-core", + HEALTH = "spt-health", + HIDEOUT = "spt-hideout", + HTTP = "spt-http", + IN_RAID = "spt-inraid", + INSURANCE = "spt-insurance", + INVENTORY = "spt-inventory", + ITEM = "spt-item", + LOCALE = "spt-locale", + LOCATION = "spt-location", + LOOT = "spt-loot", + MATCH = "spt-match", + PLAYERSCAV = "spt-playerscav", + PMC_CHAT_RESPONSE = "spt-pmcchatresponse", + QUEST = "spt-quest", + RAGFAIR = "spt-ragfair", + REPAIR = "spt-repair", + SCAVCASE = "spt-scavcase", + TRADER = "spt-trader", + WEATHER = "spt-weather", + SEASONAL_EVENT = "spt-seasonalevents", + LOST_ON_DEATH = "spt-lostondeath", + GIFTS = "spt-gifts", + BTR = "spt-btr" } diff --git a/TypeScript/24WebSocket/types/models/enums/FleaOfferType.d.ts b/TypeScript/24WebSocket/types/models/enums/FleaOfferType.d.ts new file mode 100644 index 0000000..9915abf --- /dev/null +++ b/TypeScript/24WebSocket/types/models/enums/FleaOfferType.d.ts @@ -0,0 +1,6 @@ +export declare enum FleaOfferType { + SINGLE = 0, + MULTI = 1, + PACK = 2, + UNKNOWN = 3 +} diff --git a/TypeScript/24WebSocket/types/models/enums/GameEditions.d.ts b/TypeScript/24WebSocket/types/models/enums/GameEditions.d.ts new file mode 100644 index 0000000..01b1022 --- /dev/null +++ b/TypeScript/24WebSocket/types/models/enums/GameEditions.d.ts @@ -0,0 +1,8 @@ +export declare enum GameEditions { + STANDARD = "standard", + LEFT_BEHIND = "left_behind", + PREPARE_FOR_ESCAPE = "prepare_for_escape", + EDGE_OF_DARKNESS = "edge_of_darkness", + UNHEARD = "unheard_edition", + TOURNAMENT = "tournament_live" +} diff --git a/TypeScript/24WebSocket/types/models/enums/ItemTpl.d.ts b/TypeScript/24WebSocket/types/models/enums/ItemTpl.d.ts new file mode 100644 index 0000000..8512ea8 --- /dev/null +++ b/TypeScript/24WebSocket/types/models/enums/ItemTpl.d.ts @@ -0,0 +1,3803 @@ +export declare enum ItemTpl { + AMMOBOX_127X55_PS12A_10RND = "65702420bfc87b3a34093219", + AMMOBOX_127X55_PS12B_10RND = "648983d6b5a2df1c815a04ec", + AMMOBOX_127X55_PS12_10RND = "6570241bcfc010a0f50069f5", + AMMOBOX_12G_50_BMG_25RND = "65702469c5d7d4cb4d07855b", + AMMOBOX_12G_525MM_25RND = "65702426cfc010a0f50069f8", + AMMOBOX_12G_7MM_25RND = "657024361419851aef03e6fa", + AMMOBOX_12G_AP20_25RND = "64898838d5b4df6140000a20", + AMMOBOX_12G_CSP_25RND = "65702479c5d7d4cb4d07855e", + AMMOBOX_12G_DUALSABOT_25RND = "6570243fcfc010a0f50069fb", + AMMOBOX_12G_EXPRESS_25RND = "65702432bfc87b3a3409321c", + AMMOBOX_12G_FLECHETTE_25RND = "65702474bfc87b3a34093226", + AMMOBOX_12G_FTX_25RND = "65702449bfc87b3a34093223", + AMMOBOX_12G_GRIZZLY_40_25RND = "6570244ec5d7d4cb4d078558", + AMMOBOX_12G_MAGNUM_25RND = "6570243bbfc87b3a3409321f", + AMMOBOX_12G_PIRANHA_25RND = "657024431419851aef03e6fd", + AMMOBOX_12G_POLEVA3_25RND = "65702452cfc010a0f50069fe", + AMMOBOX_12G_POLEVA6U_25RND = "657024581419851aef03e700", + AMMOBOX_12G_RIP_5RND = "5c1127d0d174af29be75cf68", + AMMOBOX_12G_SFORMANCE_25RND = "6570247ebfc87b3a34093229", + AMMOBOX_12G_SLUG_25RND = "6570246fcfc010a0f5006a01", + AMMOBOX_20G_56MM_25RND = "657024831419851aef03e703", + AMMOBOX_20G_62MM_25RND = "6570248dcfc010a0f5006a04", + AMMOBOX_20G_73MM_25RND = "657024921419851aef03e706", + AMMOBOX_20G_75MM_25RND = "65702495c5d7d4cb4d078561", + AMMOBOX_20G_DEVASTATOR_25RND = "6570249bcfc010a0f5006a07", + AMMOBOX_20G_POLEVA3_25RND = "657024a4bfc87b3a3409322c", + AMMOBOX_20G_POLEVA6U_25RND = "657024a91419851aef03e70c", + AMMOBOX_20G_STAR_25RND = "6570249f1419851aef03e709", + AMMOBOX_23X75_BARRIKADA_5RND = "657024b8bfc87b3a34093232", + AMMOBOX_23X75_SHRAP10_5RND = "657024aebfc87b3a3409322f", + AMMOBOX_23X75_SHRAP25_5RND = "657024b31419851aef03e70f", + AMMOBOX_23X75_ZVEZDA_5RND = "657024bdc5d7d4cb4d078564", + AMMOBOX_366TKM_APM_20RND = "657023f81419851aef03e6f1", + AMMOBOX_366TKM_EKO_20RND = "657024011419851aef03e6f4", + AMMOBOX_366TKM_FMJ_20RND = "657023f1bfc87b3a34093210", + AMMOBOX_366TKM_GEKSA_20RND = "657023fcbfc87b3a34093213", + AMMOBOX_45ACP_AP_50RND = "6489879db5a2df1c815a04ef", + AMMOBOX_45ACP_FMJ_50RND = "6570240ecfc010a0f50069f2", + AMMOBOX_45ACP_HSHOCK_50RND = "65702406bfc87b3a34093216", + AMMOBOX_45ACP_LASERFMJ_50RND = "6570240a1419851aef03e6f7", + AMMOBOX_45ACP_RIP_50RND = "65702414c5d7d4cb4d078555", + AMMOBOX_46X30_ACTION_SX_40RND = "657024c81419851aef03e712", + AMMOBOX_46X30_AP_SX_40RND = "6489870774a806211e4fb685", + AMMOBOX_46X30_FMJ_SX_40RND = "657024cecfc010a0f5006a0a", + AMMOBOX_46X30_JSP_SX_40RND = "64aceaecc4eda9354b0226b6", + AMMOBOX_46X30_SUBSONIC_SX_40RND = "657024d2bfc87b3a34093235", + AMMOBOX_545X39_7N40_120RND = "6570900858b315e8b70a8a98", + AMMOBOX_545X39_7N40_30RND = "64898602f09d032aa9399d56", + AMMOBOX_545X39_BP_120RND = "5737292724597765e5728562", + AMMOBOX_545X39_BP_120RND_DAMAGED = "57372a7f24597766fe0de0c1", + AMMOBOX_545X39_BP_30RND = "57372ac324597767001bc261", + AMMOBOX_545X39_BS_120RND = "57372b832459776701014e41", + AMMOBOX_545X39_BS_120RND_DAMAGED = "57372bad245977670b7cd242", + AMMOBOX_545X39_BS_30RND = "57372bd3245977670b7cd243", + AMMOBOX_545X39_BT_120RND = "57372c21245977670937c6c2", + AMMOBOX_545X39_BT_120RND_DAMAGED = "57372c56245977685e584582", + AMMOBOX_545X39_BT_30RND = "57372c89245977685d4159b1", + AMMOBOX_545X39_FMJ_30RND = "5737330a2459776af32363a1", + AMMOBOX_545X39_HP_30RND = "5737339e2459776af261abeb", + AMMOBOX_545X39_PPBS_120RND = "657025ebc5d7d4cb4d078588", + AMMOBOX_545X39_PPBS_30RND = "5c1262a286f7743f8a69aab2", + AMMOBOX_545X39_PP_120RND = "57372d1b2459776862260581", + AMMOBOX_545X39_PP_120RND_DAMAGED = "57372d4c245977685a3da2a1", + AMMOBOX_545X39_PP_30RND = "57372db0245977685d4159b2", + AMMOBOX_545X39_PRS_120RND = "57372deb245977685d4159b3", + AMMOBOX_545X39_PRS_120RND_DAMAGED = "57372e1924597768553071c1", + AMMOBOX_545X39_PRS_30RND = "57372e4a24597768553071c2", + AMMOBOX_545X39_PS_120RND = "57372e73245977685d4159b4", + AMMOBOX_545X39_PS_120RND_DAMAGED = "57372e94245977685648d3e1", + AMMOBOX_545X39_PS_30RND = "57372ebf2459776862260582", + AMMOBOX_545X39_SP_30RND = "573733c72459776b0b7b51b0", + AMMOBOX_545X39_T_120RND = "57372ee1245977685d4159b5", + AMMOBOX_545X39_T_120RND_DAMAGED = "57372f2824597769a270a191", + AMMOBOX_545X39_T_30RND = "57372f5c24597769917c0131", + AMMOBOX_545X39_US_120RND = "57372f7d245977699b53e301", + AMMOBOX_545X39_US_120RND_DAMAGED = "57372fc52459776998772ca1", + AMMOBOX_545X39_US_30RND = "5737300424597769942d5a01", + AMMOBOX_556X45_FMJ_100RND = "657026451419851aef03e733", + AMMOBOX_556X45_FMJ_50RND = "657024d8c5d7d4cb4d078567", + AMMOBOX_556X45_HP_100RND = "6570264acfc010a0f5006a50", + AMMOBOX_556X45_HP_50RND = "657024debfc87b3a34093238", + AMMOBOX_556X45_M855A1_100RND = "65702652cfc010a0f5006a53", + AMMOBOX_556X45_M855A1_50RND = "657024e3c5d7d4cb4d07856a", + AMMOBOX_556X45_M855_100RND = "6570264d1419851aef03e736", + AMMOBOX_556X45_M855_50RND = "5447ac644bdc2d6c208b4567", + AMMOBOX_556X45_M856A1_100RND = "6570265bcfc010a0f5006a56", + AMMOBOX_556X45_M856A1_50RND = "657024ecc5d7d4cb4d07856d", + AMMOBOX_556X45_M856_100RND = "65702656c5d7d4cb4d078591", + AMMOBOX_556X45_M856_50RND = "657024e8cfc010a0f5006a0d", + AMMOBOX_556X45_M995_100RND = "6570265f1419851aef03e739", + AMMOBOX_556X45_M995_50RND = "657024f01419851aef03e715", + AMMOBOX_556X45_RRLP_100RND = "65702664cfc010a0f5006a59", + AMMOBOX_556X45_RRLP_50RND = "657024f5cfc010a0f5006a10", + AMMOBOX_556X45_SOST_100RND = "6570266bc5d7d4cb4d078594", + AMMOBOX_556X45_SOST_50RND = "657024f9bfc87b3a3409323b", + AMMOBOX_556X45_SSA_AP_100RND = "65702681bfc87b3a3409325f", + AMMOBOX_556X45_SSA_AP_50RND = "64898583d5b4df6140000a1d", + AMMOBOX_556X45_WARMAGE_20RND = "5c11279ad174af029d64592b", + AMMOBOX_57X28_L191_50RND = "657025161419851aef03e718", + AMMOBOX_57X28_R37F_50RND = "6570251ccfc010a0f5006a13", + AMMOBOX_57X28_R37X_50RND = "65702520bfc87b3a3409323e", + AMMOBOX_57X28_SB193_50RND = "65702524cfc010a0f5006a16", + AMMOBOX_57X28_SS190_50RND = "648986bbc827d4637f01791e", + AMMOBOX_57X28_SS197SR_50RND = "657025281419851aef03e71b", + AMMOBOX_57X28_SS198LF_50RND = "6570252dbfc87b3a34093241", + AMMOBOX_762X25TT_AKBS_25RND = "6570253ec5d7d4cb4d078573", + AMMOBOX_762X25TT_FMJ43_25RND = "65702532cfc010a0f5006a19", + AMMOBOX_762X25TT_LRNPC_25RND = "6570253acfc010a0f5006a1c", + AMMOBOX_762X25TT_LRN_25RND = "65702536c5d7d4cb4d078570", + AMMOBOX_762X25TT_PST_25RND = "65702546cfc010a0f5006a1f", + AMMOBOX_762X25TT_PT_25RND = "6570254abfc87b3a34093244", + AMMOBOX_762X25TT_P_25RND = "657025421419851aef03e71e", + AMMOBOX_762X35_AP_50RND = "648985c074a806211e4fb682", + AMMOBOX_762X35_CBJ_50RND = "657023a9126cc4a57d0e17a6", + AMMOBOX_762X35_FMJ_50RND = "657023bebfc87b3a34093207", + AMMOBOX_762X35_M62_50RND = "657023b1cfc010a0f50069e5", + AMMOBOX_762X35_VMAX_50RND = "657023b71419851aef03e6e8", + AMMOBOX_762X35_WHISPER_50RND = "657023c61419851aef03e6eb", + AMMOBOX_762X39_BP_20RND = "64acea16c4eda9354b0226b0", + AMMOBOX_762X39_FMJ_20RND = "64ace9d9b5bf5e95f50a4c1d", + AMMOBOX_762X39_HP_20RND = "64acea2c03378853630da53e", + AMMOBOX_762X39_MAI_AP_20RND = "6489851fc827d4637f01791b", + AMMOBOX_762X39_PP_20RND = "64ace9f9c4eda9354b0226aa", + AMMOBOX_762X39_PS_20RND = "5649ed104bdc2d3d1c8b458b", + AMMOBOX_762X39_SP_20RND = "64ace9ff03378853630da538", + AMMOBOX_762X39_T45M1_20RND = "64acea09c4eda9354b0226ad", + AMMOBOX_762X39_US_20RND = "64acea0d03378853630da53b", + AMMOBOX_762X51_BCP_FMJ_20RND = "65702561cfc010a0f5006a28", + AMMOBOX_762X51_M61_20RND = "6570254fcfc010a0f5006a22", + AMMOBOX_762X51_M62_20RND = "65702554bfc87b3a34093247", + AMMOBOX_762X51_M80_20RND = "65702558cfc010a0f5006a25", + AMMOBOX_762X51_M993_20RND = "648984e3f09d032aa9399d53", + AMMOBOX_762X51_TCW_SP_20RND = "65702566bfc87b3a3409324d", + AMMOBOX_762X51_ULTRA_NOSLER_20RND = "6570255dbfc87b3a3409324a", + AMMOBOX_762X54R_BS_20RND = "648984b8d5b4df6140000a1a", + AMMOBOX_762X54R_BT_20RND = "65702572c5d7d4cb4d078576", + AMMOBOX_762X54R_FMJ_20RND = "64aceac0c4eda9354b0226b3", + AMMOBOX_762X54R_HP_BT_20RND = "64acee6903378853630da544", + AMMOBOX_762X54R_LPS_20RND = "65702577cfc010a0f5006a2c", + AMMOBOX_762X54R_PS_20RND = "6570257cc5d7d4cb4d078579", + AMMOBOX_762X54R_SNB_20RND = "560d75f54bdc2da74d8b4573", + AMMOBOX_762X54R_SP_BT_20RND = "64aceab0426a303417060654", + AMMOBOX_762X54R_T46M_20RND = "65702584cfc010a0f5006a2f", + AMMOBOX_86X70_AP_20RND = "6489848173c462723909a14b", + AMMOBOX_86X70_FMJ_20RND = "657023ccbfc87b3a3409320a", + AMMOBOX_86X70_TACX_20RND = "657023d6cfc010a0f50069e9", + AMMOBOX_86X70_UCW_20RND = "657023dabfc87b3a3409320d", + AMMOBOX_9X18PM_BZHT_16RND = "573722e82459776104581c21", + AMMOBOX_9X18PM_BZHT_50RND = "65702606cfc010a0f5006a3e", + AMMOBOX_9X18PM_PBM_16RND = "5737250c2459776125652acc", + AMMOBOX_9X18PM_PBM_50RND = "65702610cfc010a0f5006a41", + AMMOBOX_9X18PM_PPE_16RND = "573725b0245977612125bae2", + AMMOBOX_9X18PM_PPE_50RND = "65702619bfc87b3a34093259", + AMMOBOX_9X18PM_PPT_16RND = "5737260b24597761224311f2", + AMMOBOX_9X18PM_PPT_50RND = "65702614c5d7d4cb4d07858b", + AMMOBOX_9X18PM_PRS_16RND = "5737266524597761006c6a8c", + AMMOBOX_9X18PM_PRS_50RND = "6570261dc5d7d4cb4d07858e", + AMMOBOX_9X18PM_PSO_16RND = "5737273924597765dd374461", + AMMOBOX_9X18PM_PSO_50RND = "65702629cfc010a0f5006a47", + AMMOBOX_9X18PM_PSTM_16RND = "5737256c2459776125652acd", + AMMOBOX_9X18PM_PSTM_50RND = "65702640cfc010a0f5006a4d", + AMMOBOX_9X18PM_PST_16RND = "573727c624597765cc785b5b", + AMMOBOX_9X18PM_PST_50RND = "6570262d1419851aef03e72d", + AMMOBOX_9X18PM_PSV_16RND = "5737280e24597765cc785b5c", + AMMOBOX_9X18PM_PSV_50RND = "657026251419851aef03e72a", + AMMOBOX_9X18PM_PS_PPO_16RND = "573726d824597765d96be361", + AMMOBOX_9X18PM_PS_PPO_50RND = "65702621cfc010a0f5006a44", + AMMOBOX_9X18PM_P_16RND = "573724b42459776125652ac2", + AMMOBOX_9X18PM_P_50RND = "6570260c1419851aef03e727", + AMMOBOX_9X18PM_RG028_16RND = "5737287724597765e1625ae2", + AMMOBOX_9X18PM_RG028_50RND = "65702630cfc010a0f5006a4a", + AMMOBOX_9X18PM_SP7_16RND = "573728cc24597765cc785b5d", + AMMOBOX_9X18PM_SP7_50RND = "657026341419851aef03e730", + AMMOBOX_9X18PM_SP8_16RND = "573728f324597765e5728561", + AMMOBOX_9X18PM_SP8_50RND = "65702639bfc87b3a3409325c", + AMMOBOX_9X19_AP_63_50RND = "65702591c5d7d4cb4d07857c", + AMMOBOX_9X19_GT_50RND = "657025961419851aef03e721", + AMMOBOX_9X19_LUGER_CCI_50RND = "6570259bc5d7d4cb4d07857f", + AMMOBOX_9X19_M882_50RND = "64aceafcb5bf5e95f50a4c20", + AMMOBOX_9X19_PBP_50RND = "648987d673c462723909a151", + AMMOBOX_9X19_PSO_50RND = "657025a4bfc87b3a34093250", + AMMOBOX_9X19_PST_16RND = "5739d41224597779c3645501", + AMMOBOX_9X19_PST_50RND = "657025a81419851aef03e724", + AMMOBOX_9X19_QUAKEMAKER_50RND = "6570259fcfc010a0f5006a32", + AMMOBOX_9X19_RIP_20RND = "5c1127bdd174af44217ab8b9", + AMMOBOX_9X21_7N42_30RND = "6579847c5a0e5879d12f2873", + AMMOBOX_9X21_7U4_30RND = "6579846c1ec1943afb14c15a", + AMMOBOX_9X21_BT_30RND = "6489875745f9ca4ba51c4808", + AMMOBOX_9X21_PE_30RND = "657025c9cfc010a0f5006a38", + AMMOBOX_9X21_PS_30RND = "657025c4c5d7d4cb4d078582", + AMMOBOX_9X21_P_30RND = "657025bbcfc010a0f5006a35", + AMMOBOX_9X33R_FMJ_25RND = "657023decfc010a0f50069ec", + AMMOBOX_9X33R_HP_25RND = "657023e31419851aef03e6ee", + AMMOBOX_9X33R_JHP_25RND = "657023e7c5d7d4cb4d078552", + AMMOBOX_9X33R_SP_25RND = "657023eccfc010a0f50069ef", + AMMOBOX_9X39_BP_20RND = "6489854673c462723909a14e", + AMMOBOX_9X39_BP_8RND = "5c1260dc86f7746b106e8748", + AMMOBOX_9X39_FMJ_20RND = "657984a50fbff513dd435765", + AMMOBOX_9X39_PAB9_20RND = "657025cfbfc87b3a34093253", + AMMOBOX_9X39_SP5_20RND = "657025d4c5d7d4cb4d078585", + AMMOBOX_9X39_SP6_20RND = "657025dabfc87b3a34093256", + AMMOBOX_9X39_SPP_20RND = "657025dfcfc010a0f5006a3b", + AMMOBOX_9X39_SPP_8RND = "5c12619186f7743f871c8a32", + AMMO_127X108_B32 = "5cde8864d7f00c0010373be1", + AMMO_127X108_BZT44M = "5d2f2ab648f03550091993ca", + AMMO_127X55_PS12 = "5cadf6ddae9215051e1c23b2", + AMMO_127X55_PS12A = "5cadf6e5ae921500113bb973", + AMMO_127X55_PS12B = "5cadf6eeae921500134b2799", + AMMO_12G_50_BMG = "5d6e68c4a4b9361b93413f79", + AMMO_12G_525MM = "5d6e6772a4b936088465b17c", + AMMO_12G_7MM = "560d5e524bdc2d25448b4571", + AMMO_12G_AP20 = "5d6e68a8a4b9360b6c0d54e2", + AMMO_12G_CSP = "5d6e68b3a4b9361bca7e50b5", + AMMO_12G_DUALSABOT = "5d6e68dea4b9361bcc29e659", + AMMO_12G_EXPRESS = "5d6e67fba4b9361bc73bc779", + AMMO_12G_FLECHETTE = "5d6e6911a4b9361bd5780d52", + AMMO_12G_FTX = "5d6e68e6a4b9361c140bcfe0", + AMMO_12G_GRIZZLY_40 = "5d6e6869a4b9361c140bcfde", + AMMO_12G_MAGNUM = "5d6e6806a4b936088465b17e", + AMMO_12G_PIRANHA = "64b8ee384b75259c590fa89b", + AMMO_12G_POLEVA3 = "5d6e6891a4b9361bd473feea", + AMMO_12G_POLEVA6U = "5d6e689ca4b9361bc8618956", + AMMO_12G_RIP = "5c0d591486f7744c505b416f", + AMMO_12G_SFORMANCE = "5d6e68d1a4b93622fe60e845", + AMMO_12G_SLUG = "58820d1224597753c90aeb13", + AMMO_20G_56MM = "5d6e695fa4b936359b35d852", + AMMO_20G_62MM = "5d6e69b9a4b9361bc8618958", + AMMO_20G_73MM = "5d6e69c7a4b9360b6c0d54e4", + AMMO_20G_75MM = "5a38ebd9c4a282000d722a5b", + AMMO_20G_DEVASTATOR = "5d6e6a5fa4b93614ec501745", + AMMO_20G_POLEVA3 = "5d6e6a53a4b9361bd473feec", + AMMO_20G_POLEVA6U = "5d6e6a42a4b9364f07165f52", + AMMO_20G_STAR = "5d6e6a05a4b93618084f58d0", + AMMO_20X1MM_DISK = "6601546f86889319850bd566", + AMMO_23X75_BARRIKADA = "5e85aa1a988a8701445df1f5", + AMMO_23X75_SHRAP10 = "5e85a9a6eacf8c039e4e2ac1", + AMMO_23X75_SHRAP25 = "5f647f31b6238e5dd066e196", + AMMO_23X75_ZVEZDA = "5e85a9f4add9fe03027d9bf1", + AMMO_26X75_FLARE = "62389bc9423ed1685422dc57", + AMMO_26X75_GREEN = "62389aaba63f32501b1b444f", + AMMO_26X75_RED = "62389ba9a63f32501b1b4451", + AMMO_26X75_SIGNAL = "635267f063651329f75a4ee8", + AMMO_26X75_SIGNAL_FLARE_GREEN = "624c0570c9b794431568f5d5", + AMMO_26X75_SIGNAL_FLARE_RED = "624c09cfbc2e27219346d955", + AMMO_26X75_SIGNAL_FLARE_WHITE = "624c09da2cec124eb67c1046", + AMMO_26X75_SIGNAL_FLARE_YELLOW = "624c09e49b98e019a3315b66", + AMMO_26X75_YELLOW = "62389be94d5d474bf712e709", + AMMO_30X29_VOG30 = "5d70e500a4b9364de70d38ce", + AMMO_366TKM_APM = "5f0596629e22f464da6bbdd9", + AMMO_366TKM_EKO = "59e655cb86f77411dc52a77b", + AMMO_366TKM_FMJ = "59e6542b86f77411dc52a77a", + AMMO_366TKM_GEKSA = "59e6658b86f77411d949b250", + AMMO_40MMRU_VOG25 = "5656eb674bdc2d35148b457c", + AMMO_40X46_M381 = "5ede474b0c226a66f5402622", + AMMO_40X46_M386 = "5ede475b549eed7c6d5c18fb", + AMMO_40X46_M406 = "5ede4739e0350d05467f73e8", + AMMO_40X46_M433 = "5f0c892565703e5c461894e9", + AMMO_40X46_M441 = "5ede47405b097655935d7d16", + AMMO_40X46_M576 = "5ede475339ee016e8c534742", + AMMO_45ACP_AP = "5efb0cabfb3e451d70735af5", + AMMO_45ACP_FMJ = "5e81f423763d9f754677bf2e", + AMMO_45ACP_HYDRASHOK = "5efb0fc6aeb21837e749c801", + AMMO_45ACP_LASERMATCH = "5efb0d4f4bc50b58e81710f3", + AMMO_45ACP_RIP = "5ea2a8e200685063ec28c05a", + AMMO_46X30_ACTION_SX = "5ba26812d4351e003201fef1", + AMMO_46X30_AP_SX = "5ba26835d4351e0035628ff5", + AMMO_46X30_FMJ_SX = "5ba2678ad4351e44f824b344", + AMMO_46X30_JSP_SX = "64b6979341772715af0f9c39", + AMMO_46X30_SUBSONIC_SX = "5ba26844d4351e00334c9475", + AMMO_545X39_7N40 = "61962b617c6c7b169525f168", + AMMO_545X39_BP = "56dfef82d2720bbd668b4567", + AMMO_545X39_BS = "56dff026d2720bb8668b4567", + AMMO_545X39_BT = "56dff061d2720bb5668b4567", + AMMO_545X39_FMJ = "56dff0bed2720bb0668b4567", + AMMO_545X39_HP = "56dff216d2720bbd668b4568", + AMMO_545X39_PP = "56dff2ced2720bb4668b4567", + AMMO_545X39_PPBS = "5c0d5e4486f77478390952fe", + AMMO_545X39_PRS = "56dff338d2720bbd668b4569", + AMMO_545X39_PS = "56dff3afd2720bba668b4567", + AMMO_545X39_SP = "56dff421d2720b5f5a8b4567", + AMMO_545X39_T = "56dff4a2d2720bbd668b456a", + AMMO_545X39_US = "56dff4ecd2720b5f5a8b4568", + AMMO_556X45_6MM_BB = "6241c316234b593b5676b637", + AMMO_556X45_FMJ = "59e6920f86f77411d82aa167", + AMMO_556X45_HP = "59e6927d86f77411da468256", + AMMO_556X45_M855 = "54527a984bdc2d4e668b4567", + AMMO_556X45_M855A1 = "54527ac44bdc2d36668b4567", + AMMO_556X45_M856 = "59e68f6f86f7746c9f75e846", + AMMO_556X45_M856A1 = "59e6906286f7746c9f75e847", + AMMO_556X45_M995 = "59e690b686f7746c9f75e848", + AMMO_556X45_RRLP = "59e6918f86f7746c9f75e849", + AMMO_556X45_SOST = "60194943740c5d77f6705eea", + AMMO_556X45_SSA_AP = "601949593ae8f707c4608daa", + AMMO_556X45_WARMAGE = "5c0d5ae286f7741e46554302", + AMMO_57X28_L191 = "5cc80f53e4a949000e1ea4f8", + AMMO_57X28_R37F = "5cc86832d7f00c000d3a6e6c", + AMMO_57X28_R37X = "5cc86840d7f00c002412c56c", + AMMO_57X28_SB193 = "5cc80f67e4a949035e43bbba", + AMMO_57X28_SS190 = "5cc80f38e4a949001152b560", + AMMO_57X28_SS197SR = "5cc80f8fe4a949033b0224a2", + AMMO_57X28_SS198LF = "5cc80f79e4a949033c7343b2", + AMMO_68X51_FMJ = "6529302b8c26af6326029fb7", + AMMO_68X51_HYBRID = "6529243824cbe3c74a05e5c1", + AMMO_762X25TT_AKBS = "5735fdcd2459776445391d61", + AMMO_762X25TT_FMJ43 = "5735ff5c245977640e39ba7e", + AMMO_762X25TT_LRN = "573601b42459776410737435", + AMMO_762X25TT_LRNPC = "573602322459776445391df1", + AMMO_762X25TT_P = "5736026a245977644601dc61", + AMMO_762X25TT_PST = "573603562459776430731618", + AMMO_762X25TT_PT = "573603c924597764442bd9cb", + AMMO_762X35_AP = "5fd20ff893a8961fc660a954", + AMMO_762X35_BCP_FMJ = "5fbe3ffdf8b6a877a729ea82", + AMMO_762X35_CBJ = "64b8725c4b75259c590fa899", + AMMO_762X35_M62 = "619636be6db0f2477964e710", + AMMO_762X35_VMAX = "6196364158ef8c428c287d9f", + AMMO_762X35_WHISPER = "6196365d58ef8c428c287da1", + AMMO_762X39_BP = "59e0d99486f7744a32234762", + AMMO_762X39_FMJ = "64b7af5a8532cf95ee0a0dbd", + AMMO_762X39_HP = "59e4d3d286f774176a36250a", + AMMO_762X39_MAI_AP = "601aa3d2b2bcb34913271e6d", + AMMO_762X39_PP = "64b7af434b75259c590fa893", + AMMO_762X39_PS = "5656d7c34bdc2d9d198b4587", + AMMO_762X39_SP = "64b7af734b75259c590fa895", + AMMO_762X39_T45M1 = "59e4cf5286f7741778269d8a", + AMMO_762X39_US = "59e4d24686f7741776641ac7", + AMMO_762X51_BCP_FMJ = "5e023e53d4353e3302577c4c", + AMMO_762X51_M61 = "5a6086ea4f39f99cd479502f", + AMMO_762X51_M62 = "5a608bf24f39f98ffc77720e", + AMMO_762X51_M80 = "58dd3ad986f77403051cba8f", + AMMO_762X51_M993 = "5efb0c1bd79ff02a1f5e68d9", + AMMO_762X51_TCW_SP = "5e023e6e34d52a55c3304f71", + AMMO_762X51_ULTRA_NOSLER = "5e023e88277cce2b522ff2b1", + AMMO_762X54R_BS = "5e023d48186a883be655e551", + AMMO_762X54R_BT = "5e023d34e8a400319a28ed44", + AMMO_762X54R_FMJ = "64b8f7968532cf95ee0a0dbf", + AMMO_762X54R_HP_BT = "64b8f7c241772715af0f9c3d", + AMMO_762X54R_LPS = "5887431f2459777e1612938f", + AMMO_762X54R_PS = "59e77a2386f7742ee578960a", + AMMO_762X54R_SNB = "560d61e84bdc2da74d8b4571", + AMMO_762X54R_SP_BT = "64b8f7b5389d7ffd620ccba2", + AMMO_762X54R_T46M = "5e023cf8186a883be655e54f", + AMMO_86X70_AP = "5fc382a9d724d907e2077dab", + AMMO_86X70_FMJ = "5fc275cf85fd526b824a571a", + AMMO_86X70_TACX = "5fc382b6d6fa9c00c571bbc3", + AMMO_86X70_UCW = "5fc382c1016cce60e8341b20", + AMMO_9X18PM_BZHT = "573718ba2459775a75491131", + AMMO_9X18PM_P = "573719762459775a626ccbc1", + AMMO_9X18PM_PBM = "573719df2459775a626ccbc2", + AMMO_9X18PM_PPE = "57371b192459775a9f58a5e0", + AMMO_9X18PM_PPT = "57371e4124597760ff7b25f1", + AMMO_9X18PM_PRS = "57371eb62459776125652ac1", + AMMO_9X18PM_PSO = "57371f8d24597761006c6a81", + AMMO_9X18PM_PST = "5737201124597760fc4431f1", + AMMO_9X18PM_PSTM = "57371aab2459775a77142f22", + AMMO_9X18PM_PSV = "5737207f24597760ff7b25f2", + AMMO_9X18PM_PS_PPO = "57371f2b24597761224311f1", + AMMO_9X18PM_RG028 = "573720e02459776143012541", + AMMO_9X18PM_SHRAPNEL = "5943d9c186f7745a13413ac9", + AMMO_9X18PM_SP7 = "57372140245977611f70ee91", + AMMO_9X18PM_SP8 = "5737218f245977612125ba51", + AMMO_9X19_AP_63 = "5c925fa22e221601da359b7b", + AMMO_9X19_GT = "5c3df7d588a4501f290594e5", + AMMO_9X19_LUGER_CCI = "5a3c16fe86f77452b62de32a", + AMMO_9X19_M882 = "64b7bbb74b75259c590fa897", + AMMO_9X19_PBP = "5efb0da7a29a85116f6ea05f", + AMMO_9X19_PSO = "58864a4f2459770fcc257101", + AMMO_9X19_PST = "56d59d3ad2720bdb418b4577", + AMMO_9X19_QUAKEMAKER = "5efb0e16aeb21837e749c7ff", + AMMO_9X19_RIP = "5c0d56a986f774449d5de529", + AMMO_9X21_7N42 = "6576f4708ca9c4381d16cd9d", + AMMO_9X21_7U4 = "6576f93989f0062e741ba952", + AMMO_9X21_BT = "5a26ac0ec4a28200741e1e18", + AMMO_9X21_P = "5a26abfac4a28232980eabff", + AMMO_9X21_PE = "5a26ac06c4a282000c5a90a8", + AMMO_9X21_PS = "5a269f97c4a282000b151807", + AMMO_9X33R_FMJ = "62330b3ed4dc74626d570b95", + AMMO_9X33R_HP = "62330bfadc5883093563729b", + AMMO_9X33R_JHP = "62330c18744e5e31df12f516", + AMMO_9X33R_SP = "62330c40bdd19b369e1e53d1", + AMMO_9X39_BP = "5c0d688c86f77413ae3407b2", + AMMO_9X39_FMJ = "6576f96220d53a5b8f3e395e", + AMMO_9X39_PAB9 = "61962d879bb3d20b0946d385", + AMMO_9X39_SP5 = "57a0dfb82459774d3078b56c", + AMMO_9X39_SP6 = "57a0e5022459774d1673f889", + AMMO_9X39_SPP = "5c0d668f86f7747ccb7f13b2", + ARMBAND_ALPHA = "619bc61e86e01e16f839a999", + ARMBAND_ARENA = "664a5480bfcc521bad3192ca", + ARMBAND_BEAR = "619bdd8886e01e16f839a99c", + ARMBAND_BLUE = "5b3f3af486f774679e752c1f", + ARMBAND_DEADSKUL = "619bddc6c9546643a67df6ee", + ARMBAND_EVASION = "60b0f988c4449e4cb624c1da", + ARMBAND_GREEN = "5b3f3b0186f774021a2afef7", + ARMBAND_KIBA_ARMS = "619bde3dc9546643a67df6f2", + ARMBAND_LABS = "619bde7fc9546643a67df6f4", + ARMBAND_OF_THE_UNHEARD = "660312cc4d6cdfa6f500c703", + ARMBAND_RED = "5b3f3ade86f7746b6b790d8e", + ARMBAND_RFARMY = "619bdeb986e01e16f839a99e", + ARMBAND_RIVALS_2020 = "5f9949d869e2777a0e779ba5", + ARMBAND_TERRAGROUP = "619bdef8c9546643a67df6f6", + ARMBAND_TRAIN_HARD = "619bddffc9546643a67df6f0", + ARMBAND_UNTAR = "619bdf9cc9546643a67df6f8", + ARMBAND_USEC = "619bdfd4c9546643a67df6fa", + ARMBAND_WHITE = "5b3f16c486f7747c327f55f7", + ARMBAND_YELLOW = "5b3f3b0e86f7746752107cda", + ARMOREDEQUIPMENT_ALTYN_HELMET_FACE_SHIELD = "5aa7e373e5b5b000137b76f0", + ARMOREDEQUIPMENT_CRYE_PRECISION_AIRFRAME_CHOPS = "5c178a942e22164bef5ceca3", + ARMOREDEQUIPMENT_CRYE_PRECISION_AIRFRAME_EARS = "5c1793902e221602b21d3de2", + ARMOREDEQUIPMENT_DIAMOND_AGE_BASTION_HELMET_ARMOR_PLATE = "5ea18c84ecf1982c7712d9a2", + ARMOREDEQUIPMENT_DIAMOND_AGE_NEOSTEEL_HELMET_BALLISTIC_MANDIBLE = "6570a88c8f221f3b210353b7", + ARMOREDEQUIPMENT_GALVION_CAIMAN_FIXED_ARM_VISOR = "5f60bf4558eff926626a60f2", + ARMOREDEQUIPMENT_GALVION_CAIMAN_HYBRID_BALLISTIC_APPLIQUE = "5f60b85bbdb8e27dee3dc985", + ARMOREDEQUIPMENT_GALVION_CAIMAN_HYBRID_BALLISTIC_MANDIBLE_GUARD = "5f60c076f2bcbb675b00dac2", + ARMOREDEQUIPMENT_KIVERM_FACE_SHIELD = "5b46238386f7741a693bcf9c", + ARMOREDEQUIPMENT_KOLPAK1S_FACE_SHIELD = "5ac4c50d5acfc40019262e87", + ARMOREDEQUIPMENT_LSHZ2DTM_AVENTAIL = "5d6d3be5a4b9361bc73bc763", + ARMOREDEQUIPMENT_LSHZ2DTM_COVER_BLACK = "5d6d3943a4b9360dbc46d0cc", + ARMOREDEQUIPMENT_LSHZ2DTM_FACE_SHIELD = "5d6d3829a4b9361bc8618943", + ARMOREDEQUIPMENT_MASKA1SCH_FACE_SHIELD_KILLA_EDITION = "5c0e842486f77443a74d2976", + ARMOREDEQUIPMENT_MASKA1SCH_FACE_SHIELD_OLIVE_DRAB = "5c0919b50db834001b7ce3b9", + ARMOREDEQUIPMENT_NPP_KLASS_TOR2_HELMET_FACE_SHIELD = "65719f9ef392ad76c50a2ec8", + ARMOREDEQUIPMENT_OPSCORE_FAST_GUNSIGHT_MANDIBLE = "5a16ba61fcdbcb098008728a", + ARMOREDEQUIPMENT_OPSCORE_FAST_MULTIHIT_BALLISTIC_FACE_SHIELD = "5a16b7e1fcdbcb00165aa6c9", + ARMOREDEQUIPMENT_OPSCORE_FAST_SIDE_ARMOR = "5a16badafcdbcb001865f72d", + ARMOREDEQUIPMENT_OPSCORE_FAST_VISOR = "5a16b672fcdbcb001912fa83", + ARMOREDEQUIPMENT_OPSCORE_SLAAP_ARMOR_HELMET_PLATE_TAN = "5c0e66e2d174af02a96252f4", + ARMOREDEQUIPMENT_RYST_FACE_SHIELD = "5f60c85b58eff926626a60f7", + ARMOREDEQUIPMENT_TACKEK_HEAVY_TROOPER_MASK_FOR_OPSCORETYPE_HELMETS = "5ea058e01dbce517f324b3e2", + ARMOREDEQUIPMENT_TEAM_WENDY_EXFIL_BALLISTIC_FACE_SHIELD_BLACK = "5e00cdd986f7747473332240", + ARMOREDEQUIPMENT_TEAM_WENDY_EXFIL_BALLISTIC_FACE_SHIELD_COYOTE_BROWN = "5e01f37686f774773c6f6c15", + ARMOREDEQUIPMENT_TEAM_WENDY_EXFIL_EAR_COVERS_BLACK = "5e00cfa786f77469dc6e5685", + ARMOREDEQUIPMENT_TEAM_WENDY_EXFIL_EAR_COVERS_COYOTE_BROWN = "5e01f31d86f77465cf261343", + ARMOREDEQUIPMENT_VULKAN5_HELMET_FACE_SHIELD = "5ca2113f86f7740b2547e1d2", + ARMOREDEQUIPMENT_ZSH12M_FACE_SHIELD = "5aa7e3abe5b5b000171d064d", + ARMORPLATE_6B12_BALLISTIC_PLATES_FRONT = "654a4dea7c17dec2f50cc86a", + ARMORPLATE_6B13_CUSTOM_BALLISTIC_PLATES_BACK = "656efd66034e8e01c407f35c", + ARMORPLATE_6B232_BALLISTIC_PLATE_BACK = "657b22485f444d6dff0c6c2f", + ARMORPLATE_6B33_BALLISTIC_PLATE_FRONT = "656f603f94b480b8a500c0d6", + ARMORPLATE_AR500_LEGACY_PLATE_BALLISTIC_PLATE = "656f9d5900d62bcd2e02407c", + ARMORPLATE_ARAMID_INSERT = "64b111fe1be308f1800688c1", + ARMORPLATE_CULT_LOCUST_BALLISTIC_PLATE = "656fa8d700d62bcd2e024084", + ARMORPLATE_CULT_TERMITE_BALLISTIC_PLATE = "656fa99800d62bcd2e024088", + ARMORPLATE_ESAPI_LEVEL_IV_BALLISTIC_PLATE = "64afdcb83efdfea28601d041", + ARMORPLATE_ESBI_LEVEL_IV_BALLISTIC_PLATE_SIDE = "64afdb577bb3bfe8fe03fd1d", + ARMORPLATE_GAC_3S15M_BALLISTIC_PLATE = "656fae5f7c2d57afe200c0d7", + ARMORPLATE_GAC_4SSS2_BALLISTIC_PLATE = "656faf0ca0dce000a2020f77", + ARMORPLATE_GLOBAL_ARMORS_STEEL_BALLISTIC_PLATE = "656fa0fb498d1b7e3e071d9c", + ARMORPLATE_GRANIT_4RS_BALLISTIC_PLATES_BACK = "654a4a964b446df1ad03f192", + ARMORPLATE_GRANIT_4RS_BALLISTIC_PLATE_FRONT = "656f63c027aed95beb08f62c", + ARMORPLATE_GRANIT_4_BALLISTIC_PLATES_BACK = "656efaf54772930db4031ff5", + ARMORPLATE_GRANIT_4_BALLISTIC_PLATE_FRONT = "656f611f94b480b8a500c0db", + ARMORPLATE_GRANIT_BALLISTIC_PLATE_SIDE = "64afd81707e2cf40e903a316", + ARMORPLATE_GRANIT_BR4_BALLISTIC_PLATE = "65573fa5655447403702a816", + ARMORPLATE_GRANIT_BR5_BALLISTIC_PLATE = "64afc71497cf3a403c01ff38", + ARMORPLATE_HELMET_ALL_EXEPTNECK = "64b11c08506a73f6a10f9364", + ARMORPLATE_KIBA_ARMS_STEEL_BALLISTIC_PLATE = "656fa76500d62bcd2e024080", + ARMORPLATE_KIBA_ARMS_TITAN_BALLISTIC_PLATE = "656fa25e94b480b8a500c0e0", + ARMORPLATE_KITECO_SCIV_SA_BALLISTIC_PLATE = "656fafe3498d1b7e3e071da4", + ARMORPLATE_KORUNDVMK_BALLISTIC_PLATES_FRONT = "656f66b5c6baea13cd07e108", + ARMORPLATE_KORUNDVMK_BALLISTIC_PLATE_BACK = "657b28d25f444d6dff0c6c77", + ARMORPLATE_KORUNDVM_BALLISTIC_PLATES_FRONT = "656f664200d62bcd2e024077", + ARMORPLATE_KORUNDVM_BALLISTIC_PLATE_BACK = "657b2797c3dbcb01d60c35ea", + ARMORPLATE_KORUNDVM_BALLISTIC_PLATE_SIDE = "654a4f8bc721968a4404ef18", + ARMORPLATE_MONOCLETE_LEVEL_III_PE_BALLISTIC_PLATE = "656fad8c498d1b7e3e071da0", + ARMORPLATE_NESCO_4400SAMC_BALLISTIC_PLATE = "656fa61e94b480b8a500c0e8", + ARMORPLATE_NEWSPHERETECH_LEVEL_III_BALLISTIC_PLATE = "656fb21fa0dce000a2020f7c", + ARMORPLATE_PRTCTR_LIGHTWEIGHT_BALLISTIC_PLATE = "656fac30c6baea13cd07e10c", + ARMORPLATE_SAPI_LEVEL_III_BALLISTIC_PLATE = "655746010177119f4a097ff7", + ARMORPLATE_SPRTN_ELAPHROS_BALLISTIC_PLATE = "656fb0bd7c2d57afe200c0dc", + ARMORPLATE_SPRTN_OMEGA_BALLISTIC_PLATE = "656f9fa0498d1b7e3e071d98", + ARMORPLATE_SSAPI_LEVEL_III_BALLISTIC_PLATE_SIDE = "6557458f83942d705f0c4962", + ARMORPLATE_TALLCOM_GUARDIAN_BALLISTIC_PLATE = "656fa53d94b480b8a500c0e4", + ARMORPLATE_ZHUK3_BALLISTIC_PLATE_FRONT = "656f57dc27aed95beb08f628", + ARMOR_511_TACTICAL_HEXGRID_PLATE_CARRIER = "5fd4c474dd870108a754b241", + ARMOR_6B13_ASSAULT_ARMOR_DIGITAL_FLORA = "5c0e53c886f7747fa54205c7", + ARMOR_6B13_ASSAULT_ARMOR_FLORA = "5c0e51be86f774598e797894", + ARMOR_6B13_M_ASSAULT_ARMOR_KILLA_EDITION = "5c0e541586f7747fa54205c9", + ARMOR_6B231_BODY_ARMOR_DIGITAL_FLORA = "5c0e5bab86f77461f55ed1f3", + ARMOR_6B232_BODY_ARMOR_MOUNTAIN_FLORA = "5c0e57ba86f7747fa141986d", + ARMOR_6B2_BODY_ARMOR_FLORA = "5df8a2ca86f7740bfe6df777", + ARMOR_6B43_ZABRALOSH_BODY_ARMOR_DIGITAL_FLORA = "545cdb794bdc2d3a198b456a", + ARMOR_BNTI_GZHELK_BODY = "5ab8e79e86f7742d8b372e78", + ARMOR_BNTI_KIRASAN_BODY = "5b44d22286f774172b0c9de8", + ARMOR_BNTI_MODULE3M_BODY = "59e7635f86f7742cbf2c1095", + ARMOR_BNTI_ZHUK_BODY_ARMOR_DIGITAL_FLORA = "5c0e625a86f7742d77340f62", + ARMOR_BNTI_ZHUK_BODY_ARMOR_PRESS = "5c0e5edb86f77461f55ed1f7", + ARMOR_DRD_BODY = "62a09d79de7ac81993580530", + ARMOR_FORT_DEFENDER2_BODY = "5e9dacf986f774054d6b89f4", + ARMOR_FORT_REDUTM_BODY = "5ca2151486f774244a3b8d30", + ARMOR_FORT_REDUTT5_BODY_ARMOR_SMOG = "5ca21c6986f77479963115a7", + ARMOR_HEXATAC_HPC_PLATE_CARRIER_MULTICAM_BLACK = "63737f448b28897f2802b874", + ARMOR_HIGHCOM_TROOPER_TFO_BODY_ARMOR_MULTICAM = "5c0e655586f774045612eeb2", + ARMOR_INTERCEPTOR_OTV_BODY_ARMOR_UCP = "64abd93857958b4249003418", + ARMOR_IOTV_GEN4_BODY_ARMOR_ASSAULT_KIT_MULTICAM = "5b44cf1486f77431723e3d05", + ARMOR_IOTV_GEN4_BODY_ARMOR_FULL_PROTECTION_KIT_MULTICAM = "5b44cd8b86f774503d30cba2", + ARMOR_IOTV_GEN4_BODY_ARMOR_HIGH_MOBILITY_KIT_MULTICAM = "5b44d0de86f774503d30cba8", + ARMOR_LBT6094A_SLICK_PLATE_CARRIER_BLACK = "5e4abb5086f77406975c9342", + ARMOR_LBT6094A_SLICK_PLATE_CARRIER_COYOTE_TAN = "6038b4b292ec1c3103795a0b", + ARMOR_LBT6094A_SLICK_PLATE_CARRIER_OLIVE_DRAB = "6038b4ca92ec1c3103795a0d", + ARMOR_MFUNTAR_BODY = "5ab8e4ed86f7742d8e50c7fa", + ARMOR_NFM_THOR_CONCEALABLE_REINFORCED_VEST_BODY = "609e8540d5c319764c2bc2e9", + ARMOR_NFM_THOR_INTEGRATED_CARRIER_BODY = "60a283193cb70855c43a381d", + ARMOR_NPP_KLASS_KORAKULON_BODY_ARMOR_BLACK = "64be79c487d1510151095552", + ARMOR_NPP_KLASS_KORAKULON_BODY_ARMOR_DIGITAL_FLORA = "64be79e2bf8412471d0d9bcc", + ARMOR_NPP_KLASS_KORUNDVM_BODY_ARMOR_BLACK = "5f5f41476bdad616ad46d631", + ARMOR_PACA_SOFT = "5648a7494bdc2d9d488b4583", + ARMOR_PACA_SOFT_ARMOR_RIVALS_EDITION = "607f20859ee58b18e41ecd90", + ASSAULTCARBINE_AS_VAL_9X39_SPECIAL_ASSAULT_RIFLE = "57c44b372459772d2b39b8ce", + ASSAULTCARBINE_KBP_9A91_9X39_COMPACT_ASSAULT_RIFLE = "644674a13d52156624001fbc", + ASSAULTCARBINE_KBP_VSK94_9X39_RIFLE = "645e0c6b3b381ede770e1cc9", + ASSAULTCARBINE_MOLOT_ARMS_SIMONOV_OPSKS_762X39_CARBINE = "587e02ff24597743df3deaeb", + ASSAULTCARBINE_MOLOT_ARMS_VPO101_VEPRHUNTER_762X51_CARBINE = "5c501a4d2e221602b412b540", + ASSAULTCARBINE_TOKAREV_AVT40_762X54R_AUTOMATIC_RIFLE = "6410733d5dd49d77bd07847e", + ASSAULTCARBINE_TOKAREV_SVT40_762X54R_RIFLE = "643ea5b23db6f9f57107d9fd", + ASSAULTCARBINE_TOZ_SIMONOV_SKS_762X39_CARBINE = "574d967124597745970e7c94", + ASSAULTRIFLE_ADAR_215_556X45_CARBINE = "5c07c60e0db834002330051f", + ASSAULTRIFLE_ASH12_127X55_ASSAULT_RIFLE = "5cadfbf7ae92152ac412eeef", + ASSAULTRIFLE_CMMG_MK47_MUTANT_762X39_ASSAULT_RIFLE = "606587252535c57a13424cfd", + ASSAULTRIFLE_COLT_M4A1_556X45_ASSAULT_RIFLE = "5447a9cd4bdc2dbd208b4567", + ASSAULTRIFLE_DESERT_TECH_MDR_556X45_ASSAULT_RIFLE = "5c488a752e221602b412af63", + ASSAULTRIFLE_DESERT_TECH_MDR_762X51_ASSAULT_RIFLE = "5dcbd56fdbd3d91b3e5468d5", + ASSAULTRIFLE_DS_ARMS_SA58_762X51_ASSAULT_RIFLE = "5b0bbe4e5acfc40dc528a72d", + ASSAULTRIFLE_FN_SCARH_762X51_ASSAULT_RIFLE = "6183afd850224f204c1da514", + ASSAULTRIFLE_FN_SCARH_762X51_ASSAULT_RIFLE_FDE = "6165ac306ef05c2ce828ef74", + ASSAULTRIFLE_FN_SCARL_556X45_ASSAULT_RIFLE = "6184055050224f204c1da540", + ASSAULTRIFLE_FN_SCARL_556X45_ASSAULT_RIFLE_FDE = "618428466ef05c2ce828f218", + ASSAULTRIFLE_HK_416A5_556X45_ASSAULT_RIFLE = "5bb2475ed4351e00853264e3", + ASSAULTRIFLE_HK_G36_556X45_ASSAULT_RIFLE = "623063e994fc3f7b302a9696", + ASSAULTRIFLE_KALASHNIKOV_AK101_556X45_ASSAULT_RIFLE = "5ac66cb05acfc40198510a10", + ASSAULTRIFLE_KALASHNIKOV_AK102_556X45_ASSAULT_RIFLE = "5ac66d015acfc400180ae6e4", + ASSAULTRIFLE_KALASHNIKOV_AK103_762X39_ASSAULT_RIFLE = "5ac66d2e5acfc43b321d4b53", + ASSAULTRIFLE_KALASHNIKOV_AK104_762X39_ASSAULT_RIFLE = "5ac66d725acfc43b321d4b60", + ASSAULTRIFLE_KALASHNIKOV_AK105_545X39_ASSAULT_RIFLE = "5ac66d9b5acfc4001633997a", + ASSAULTRIFLE_KALASHNIKOV_AK12_545X39_ASSAULT_RIFLE = "6499849fc93611967b034949", + ASSAULTRIFLE_KALASHNIKOV_AK74M_545X39_ASSAULT_RIFLE = "5ac4cd105acfc40016339859", + ASSAULTRIFLE_KALASHNIKOV_AK74N_545X39_ASSAULT_RIFLE = "5644bd2b4bdc2d3b4c8b4572", + ASSAULTRIFLE_KALASHNIKOV_AK74_545X39_ASSAULT_RIFLE = "5bf3e03b0db834001d2c4a9c", + ASSAULTRIFLE_KALASHNIKOV_AKMN_762X39_ASSAULT_RIFLE = "5a0ec13bfcdbcb00165aa685", + ASSAULTRIFLE_KALASHNIKOV_AKMSN_762X39_ASSAULT_RIFLE = "5abcbc27d8ce8700182eceeb", + ASSAULTRIFLE_KALASHNIKOV_AKMS_762X39_ASSAULT_RIFLE = "59ff346386f77477562ff5e2", + ASSAULTRIFLE_KALASHNIKOV_AKM_762X39_ASSAULT_RIFLE = "59d6088586f774275f37482f", + ASSAULTRIFLE_KALASHNIKOV_AKS74N_545X39_ASSAULT_RIFLE = "5ab8e9fcd8ce870019439434", + ASSAULTRIFLE_KALASHNIKOV_AKS74UB_545X39_ASSAULT_RIFLE = "5839a40f24597726f856b511", + ASSAULTRIFLE_KALASHNIKOV_AKS74UN_545X39_ASSAULT_RIFLE = "583990e32459771419544dd2", + ASSAULTRIFLE_KALASHNIKOV_AKS74U_545X39_ASSAULT_RIFLE = "57dc2fa62459775949412633", + ASSAULTRIFLE_KALASHNIKOV_AKS74_545X39_ASSAULT_RIFLE = "5bf3e0490db83400196199af", + ASSAULTRIFLE_LONE_STAR_TX15_DML_556X45_CARBINE = "5d43021ca4b9362eab4b5e25", + ASSAULTRIFLE_MASTER_HAND = "5ae083b25acfc4001a5fc702", + ASSAULTRIFLE_MOLOT_ARMS_VPO136_VEPRKM_762X39_CARBINE = "59e6152586f77473dc057aa1", + ASSAULTRIFLE_MOLOT_ARMS_VPO209_366_TKM_CARBINE = "59e6687d86f77411d949b251", + ASSAULTRIFLE_RIFLE_DYNAMICS_RD704_762X39_ASSAULT_RIFLE = "628a60ae6b1d481ff772e9c8", + ASSAULTRIFLE_SAG_AK545_545X39_CARBINE = "628b5638ad252a16da6dd245", + ASSAULTRIFLE_SAG_AK545_SHORT_545X39_CARBINE = "628b9c37a733087d0d7fe84b", + ASSAULTRIFLE_SIG_MCX_300_BLACKOUT_ASSAULT_RIFLE = "5fbcc1d9016cce60e8341ab3", + ASSAULTRIFLE_SIG_MCX_SPEAR_68X51_ASSAULT_RIFLE = "65290f395ae2ae97b80fdf2d", + ASSAULTRIFLE_STEYR_AUG_A1_556X45_ASSAULT_RIFLE = "62e7c4fba689e8c9c50dfc38", + ASSAULTRIFLE_STEYR_AUG_A3_556X45_ASSAULT_RIFLE = "63171672192e68c5460cebc5", + ASSAULTSCOPE_ELCAN_SPECTERDR_1X4X_SCOPE = "57ac965c24597706be5f975c", + ASSAULTSCOPE_ELCAN_SPECTERDR_1X4X_SCOPE_FDE = "57aca93d2459771f2c7e26db", + ASSAULTSCOPE_ELCAN_SPECTER_OS4X_ASSAULT_SCOPE = "544a3f024bdc2d1d388b4568", + ASSAULTSCOPE_HK_G36_HENSOLDT_HKV_3X_CARRY_HANDLE = "622b4d7df9cfc87d675d2ded", + ASSAULTSCOPE_HK_G36_HENSOLDT_HKV_ZF_15X_CARRY_HANDLE = "622b4f54dc8dcc0ba8742f85", + ASSAULTSCOPE_KIBA_ARMS_SHORT_PRISM_25X_SCOPE = "5c1cdd512e22161b267d91ae", + ASSAULTSCOPE_LEUPOLD_MARK_4_HAMR_4X24_DELTAPOINT_HYBRID_ASSAULT_SCOPE = "544a3a774bdc2d3a388b4567", + ASSAULTSCOPE_MONSTRUM_TACTICAL_COMPACT_PRISM_SCOPE_2X32 = "5d2dc3e548f035404a1a4798", + ASSAULTSCOPE_SIG_SAUER_BRAVO4_4X30_SCOPE = "57adff4f24597737f373b6e6", + ASSAULTSCOPE_STEYR_AUG_A1_STG77_15X_OPTIC_SIGHT = "62ea7c793043d74a0306e19f", + ASSAULTSCOPE_STEYR_AUG_A3_M1_15X_OPTIC_SIGHT = "62ebd290c427473eff0baafb", + ASSAULTSCOPE_SWAMPFOX_TRIHAWK_PRISM_SCOPE_3X30 = "626bb8532c923541184624b4", + ASSAULTSCOPE_TRIJICON_ACOG_TA01NSN_4X32_SCOPE_BLACK = "5c05293e0db83400232fff80", + ASSAULTSCOPE_TRIJICON_ACOG_TA01NSN_4X32_SCOPE_TAN = "5c052a900db834001a66acbd", + ASSAULTSCOPE_TRIJICON_ACOG_TA11D_35X35_SCOPE = "59db7e1086f77448be30ddf3", + ASSAULTSCOPE_VALDAY_PS320_16X_SCOPE = "5c0517910db83400232ffee5", + AUXILIARYMOD_ARMASIGHT_VULCAN_MG_SCOPE_EYECUP = "5b3cbc235acfc4001863ac44", + AUXILIARYMOD_ARMASIGHT_ZEUSPRO_SCOPE_EYECUP = "63fc4533b10b17385349b565", + AUXILIARYMOD_AXION_KOBRA_SIGHT_SHADE = "591c4e1186f77410354b316e", + AUXILIARYMOD_FAB_DEFENSE_PROTECTION_CAP_FOR_AGR870 = "5bfe86bd0db83400232fe959", + AUXILIARYMOD_GLOCK_ZEV_TECH_SIGHT_MOUNT_CAP = "5a71e1868dc32e00094b97f3", + AUXILIARYMOD_HK_G36_HAND_STOP = "622f16a1a5958f63c67f1737", + AUXILIARYMOD_HK_USP_HAMMER = "6193d3be7c6c7b169525f0da", + AUXILIARYMOD_HK_USP_SLIDE_LOCK = "6193d5d4f8ee7e52e4210a1b", + AUXILIARYMOD_HK_USP_TRIGGER = "6193d3cded0429009f543e6a", + AUXILIARYMOD_KAC_URX_331_LONG_PANEL = "5d123b70d7ad1a0ee35e0754", + AUXILIARYMOD_KAC_URX_331_LONG_PANEL_FDE = "5d124c0ed7ad1a10d168dd9b", + AUXILIARYMOD_KAC_URX_331_SHORT_PANEL = "5d123a3cd7ad1a004e476058", + AUXILIARYMOD_KAC_URX_331_SHORT_PANEL_FDE = "5d124c01d7ad1a115c7d59fb", + AUXILIARYMOD_KAC_URX_331_STOPPER_PANEL = "5d123b7dd7ad1a004f01b262", + AUXILIARYMOD_KAC_URX_331_STOPPER_PANEL_FDE = "5d124c1ad7ad1a12227c53a7", + AUXILIARYMOD_KMZ_1P59_SCOPE_EYECUP = "5d0b5cd3d7ad1a3fe32ad263", + AUXILIARYMOD_KPSR2_SIGHT_SHADE = "62ff9faffe938a24c90c10df", + AUXILIARYMOD_M1911A1_CASPIAN_ARMS_TRIK_TRIGGER = "5ef32e4d1c1fd62aea6a150d", + AUXILIARYMOD_M1911A1_HAMMER = "5e81c550763d9f754677befd", + AUXILIARYMOD_M1911A1_SLIDE_STOP = "5e81c539cb2b95385c177553", + AUXILIARYMOD_M1911A1_STI_HEX_HAMMER = "5ef35f46382a846010715a96", + AUXILIARYMOD_M1911A1_TRIGGER = "5e81c6a2ac2bb513793cdc7f", + AUXILIARYMOD_M1911A1_WILSON_EXTENDED_SLIDE_STOP = "5ef3553c43cb350a955a7ccb", + AUXILIARYMOD_M1911A1_WILSON_RETRO_COMMANDER_HAMMER = "5ef35d2ac64c5d0dfc0571b0", + AUXILIARYMOD_M1911A1_WILSON_ULTRALIGHT_SKELETONIZED_HAMMER = "5ef35bc243cb350a955a7ccd", + AUXILIARYMOD_M45A1_HAMMER = "5f3e76d86cda304dcc634054", + AUXILIARYMOD_M45A1_SLIDE_LOCK = "5f3e777688ca2d00ad199d25", + AUXILIARYMOD_M45A1_TRIGGER = "5f3e772a670e2a7b01739a52", + AUXILIARYMOD_MP155_ULTIMA_PISTOL_GRIP_RUBBER_PAD = "60785c0d232e5a31c233d51c", + AUXILIARYMOD_MP155_ULTIMA_UNDERBARREL_MOUNT = "606f26752535c57a13424d22", + AUXILIARYMOD_NPZ_1P78_SCOPE_EYECUP = "618a760e526131765025aae3", + AUXILIARYMOD_NPZ_USP1_SCOPE_EYECUP = "5cf639aad7f00c065703d455", + AUXILIARYMOD_NSPUM_SCOPE_EYECUP = "5ba36f85d4351e0085325c81", + AUXILIARYMOD_PSO_SCOPE_EYECUP = "57f3a5ae2459772b0e0bf19e", + AUXILIARYMOD_STM9_MAGWELL = "602f85fd9b513876d4338d9c", + AUXILIARYMOD_STM9_MAGWELL_GREY = "60338ff388382f4fab3fd2c8", + AUXILIARYMOD_SV98_ANTIHEAT_RIBBON = "56083eab4bdc2d26448b456a", + AUXILIARYMOD_SV98_SOUND_SUPPRESSOR_HEAT_SHIELD = "5c4eecde2e221602b3140418", + AUXILIARYMOD_TRIJICON_REAPIR_SCOPE_EYECUP = "5a1eacb3fcdbcb09800872be", + AUXILIARYMOD_TROPHY = "5ae089fb5acfc408fb13989b", + BACKPACK_3V_GEAR_PARATUS_3DAY_OPERATORS_TACTICAL_BACKPACK_FOLIAGE_GREY = "5c0e805e86f774683f3dd637", + BACKPACK_6SH118_RAID_BACKPACK_DIGITAL_FLORA = "5df8a4d786f77412672a1e3b", + BACKPACK_ANA_TACTICAL_BETA_2_BATTLE_BACKPACK_OLIVE_DRAB = "5b44c6ae86f7742d1627baea", + BACKPACK_CAMELBAK_TRIZIP_ASSAULT_BACKPACK_FOLIAGE = "545cdae64bdc2d39198b4568", + BACKPACK_DIRECT_ACTION_DRAGON_EGG_MARK_II_BACKPACK_BLACK = "656f198fb27298d6fd005466", + BACKPACK_DUFFLE_BAG = "56e33634d2720bd8058b456b", + BACKPACK_EBERLESTOCK_F4_TERMINATOR_LOAD_BEARING_BACKPACK_TIGER_STRIPE = "5f5e46b96bdad616ad46d613", + BACKPACK_EBERLESTOCK_F5_SWITCHBLADE_BACKPACK_DRY_EARTH = "5f5e467b0bc58666c37e7821", + BACKPACK_EBERLESTOCK_G2_GUNSLINGER_II_BACKPACK_DRY_EARTH = "6034d2d697633951dc245ea6", + BACKPACK_FLYYE_MBSS_BACKPACK_UCP = "544a5cde4bdc2d39388b456b", + BACKPACK_GRUPPA_99_T20_BACKPACK_MULTICAM = "619cf0335771dd3c390269ae", + BACKPACK_GRUPPA_99_T20_BACKPACK_UMBER_BROWN = "618bb76513f5097c8d5aa2d5", + BACKPACK_GRUPPA_99_T30_BACKPACK_BLACK = "628e1ffc83ec92260c0f437f", + BACKPACK_GRUPPA_99_T30_BACKPACK_MULTICAM = "62a1b7fbc30cfa1d366af586", + BACKPACK_HAZARD_4_DRAWBRIDGE_BACKPACK_COYOTE_TAN = "60a272cc93ef783291411d8e", + BACKPACK_HAZARD_4_PILLBOX_BACKPACK_BLACK = "60a2828e8689911a226117f9", + BACKPACK_HAZARD_4_TAKEDOWN_SLING_BACKPACK_BLACK = "6034d103ca006d2dca39b3f0", + BACKPACK_HAZARD_4_TAKEDOWN_SLING_BACKPACK_MULTICAM = "6038d614d10cbf667352dd44", + BACKPACK_LBT1476A_3DAY_PACK_WOODLAND = "618cfae774bb2d036a049e7c", + BACKPACK_LBT2670_SLIM_FIELD_MED_PACK_BLACK = "5e4abc6786f77406812bd572", + BACKPACK_LBT8005A_DAY_PACK_BACKPACK_MULTICAM_BLACK = "5e9dcf5986f7746c417435b3", + BACKPACK_LOLKEK_3F_TRANSFER_TOURIST = "5f5e45cc5021ce62144be7aa", + BACKPACK_MYSTERY_RANCH_BLACKJACK_50_BACKPACK_MULTICAM = "5c0e774286f77468413cc5b2", + BACKPACK_MYSTERY_RANCH_NICE_COMM_3_BVS_FRAME_SYSTEM_COYOTE = "628bc7fb408e2b2e9c0801b1", + BACKPACK_MYSTERY_RANCH_SATL_BRIDGER_ASSAULT_PACK_FOLIAGE = "656e0436d44a1bb4220303a0", + BACKPACK_OAKLEY_MECHANISM_HEAVY_DUTY_BACKPACK_BLACK = "5d5d940f86f7742797262046", + BACKPACK_PILGRIM_TOURIST = "59e763f286f7742ee57895da", + BACKPACK_SANITARS_BAG = "5e997f0b86f7741ac73993e2", + BACKPACK_SANTAS_BAG = "61b9e1aaef9a1b5d6a79899a", + BACKPACK_SCAV = "56e335e4d2720b6c058b456d", + BACKPACK_SSO_ATTACK_2_RAID_BACKPACK_KHAKI = "5ab8ebf186f7742d8b372e80", + BACKPACK_TACTICAL_SLING_BAG_KHAKI = "5ab8f04f86f774585f4237d8", + BACKPACK_TASMANIAN_TIGER_TROOPER_35_BACKPACK_KHAKI = "639346cc1c8f182ad90c8972", + BACKPACK_TEHINKOM_RKPT25_PATROL_BACKPACK_DIGITAL_FLORA = "656ddcf0f02d7bcea90bf395", + BACKPACK_TRANSFORMER_BAG = "56e33680d2720be2748b4576", + BACKPACK_VKBO_ARMY_BAG = "5ab8ee7786f7742d8f33f0b9", + BACKPACK_WARTECH_BERKUT_BB102_BACKPACK_ATACS_FG = "5ca20d5986f774331e7c9602", + BARREL_9A91_9X39 = "645122f6d4928d46d30be3ff", + BARREL_AI_AXMC_338_LM_28_INCH = "628121434fa03b6b6c35dc6a", + BARREL_AR10_762X51_18_INCH = "5a34f7f1c4a2826c6e06d75d", + BARREL_AR10_762X51_22_INCH = "5a34fae7c4a2826c6e06d760", + BARREL_AR15_556X45_18_INCH = "5d440b93a4b9364276578d4b", + BARREL_AR15_556X45_20_INCH = "5d440b9fa4b93601354d480c", + BARREL_AR15_556X45_260MM = "55d35ee94bdc2d61338b4568", + BARREL_AR15_556X45_370MM = "55d3632e4bdc2d972f8b4569", + BARREL_AR15_556X45_MOLOT_ARMS_406MM = "5c0e2f94d174af029f650d56", + BARREL_AR15_HANSON_CARBINE_556X45_137_INCH = "63d3ce0446bd475bcb50f55f", + BARREL_AR15_HANSON_CARBINE_556X45_16_INCH = "63d3d44a2a49307baf09386d", + BARREL_BENELLI_M3_SUPER_90_12GA_500MM = "6259c2c1d714855d182bad85", + BARREL_DVL10_762X51_500MM = "5888945a2459774bf43ba385", + BARREL_DVL10_M2_762X51_660MM = "5888956924597752983e182d", + BARREL_FN_FIVESEVEN_57X28 = "5d3eb5b6a4b9361eab311902", + BARREL_FN_FIVESEVEN_57X28_THREADED = "5d3eb59ea4b9361c284bb4b2", + BARREL_FN_P90_57X28_105_INCH = "5cc701aae4a949000e1ea45c", + BARREL_FN_P90_57X28_16_INCH = "5cc701d7e4a94900100ac4e7", + BARREL_FN_SCARH_762X51_13_INCH = "618168b350224f204c1da4d8", + BARREL_FN_SCARH_762X51_16_INCH = "6183b0711cb55961fa0fdcad", + BARREL_FN_SCARH_762X51_20_INCH = "6183b084a112697a4b3a6e6c", + BARREL_FN_SCARL_556X45_10_INCH = "6183fc15d3a39d50044c13e9", + BARREL_FN_SCARL_556X45_14_INCH = "6183fd911cb55961fa0fdce9", + BARREL_FN_SCARL_556X45_18_INCH = "6183fd9e8004cc50514c358f", + BARREL_GLOCK_17_9X19 = "5a6b5f868dc32e000a311389", + BARREL_GLOCK_17_9X19_BARREL_WITH_A_COMPENSATOR = "5a6b60158dc32e000a31138b", + BARREL_GLOCK_18C_9X19_BARREL_WITH_A_COMPENSATOR = "5b1fa9ea5acfc40018633c0a", + BARREL_GLOCK_19X_9X19 = "630764fea987397c0816d219", + BARREL_GLOCK_9X19_DOUBLE_DIAMOND_THREADED = "5a6b5e468dc32e001207faf5", + BARREL_GLOCK_9X19_LONE_WOLF_ALPHAWOLF_THREADED = "5a6b5b8a8dc32e001207faf3", + BARREL_GLOCK_9X19_SAI_THREADED = "5a6b5ed88dc32e000c52ec86", + BARREL_HK417_762X51_165_INCH = "61702be9faa1272e431522c3", + BARREL_HK_416A5_556X45_106_INCH = "5c6d85e02e22165df16b81f4", + BARREL_HK_416A5_556X45_11_INCH = "5bb20d92d4351e00853263eb", + BARREL_HK_416A5_556X45_145_INCH = "5bb20d9cd4351e00334c9d8a", + BARREL_HK_416A5_556X45_165_INCH_BARREL_WITH_FLIPUP_FRONT_SIGHT = "5bb20da5d4351e0035629dbf", + BARREL_HK_416A5_556X45_20_INCH = "5bb20dadd4351e00367faeff", + BARREL_HK_G36_556X45_228MM = "622b379bf9cfc87d675d2de5", + BARREL_HK_G36_556X45_318MM = "622b3858034a3e17ad0b81f5", + BARREL_HK_G36_556X45_480MM = "622b38c56762c718e457e246", + BARREL_HK_UMP_45_ACP_8_INCH = "5fc3e4a27283c4046c5814ab", + BARREL_HK_UMP_45_ACP_8_INCH_THREADED = "6130c3dffaa1272e43151c7d", + BARREL_HK_USP_45_ACP = "6194ef39de3cdf1d2614a768", + BARREL_HK_USP_ELITE_45_ACP = "6194f017ed0429009f543eaa", + BARREL_HK_USP_EXPERT_45_ACP = "6194eff92d2c397d6600348b", + BARREL_HK_USP_MATCH_45_ACP = "6194f02d9bb3d20b0946d2f0", + BARREL_HK_USP_TACTICAL_45_ACP_THREADED = "6194efe07c6c7b169525f11b", + BARREL_KRISS_VECTOR_45_ACP_5_INCH = "5fb65363d1409e5ca04b54f5", + BARREL_KRISS_VECTOR_45_ACP_6_INCH = "5fb653962b1b027b1f50bd03", + BARREL_KRISS_VECTOR_9X19_5_INCH = "5fbbc366ca32ed67276c1557", + BARREL_KRISS_VECTOR_9X19_6_INCH = "5fbbc383d5cb881a7363194a", + BARREL_KS23_23X75_510MM = "5e848d1c264f7c180b5e35a9", + BARREL_KS23_23X75_700MM = "5e848d2eea0a7c419c2f9bfd", + BARREL_M1911A1_45_ACP_127MM = "5e81c519cb2b95385c177551", + BARREL_M1911A1_45_ACP_NATIONAL_MATCH = "5f3e7801153b8571434a924c", + BARREL_M1911A1_45_ACP_THREADED = "5f3e77f59103d430b93f94c1", + BARREL_M1A_762X51_16_INCH = "5aaf9d53e5b5b00015042a52", + BARREL_M1A_762X51_22_INCH = "5addbac75acfc400194dbc56", + BARREL_M700_762X51_20_INCH_STAINLESS_STEEL_THREADED = "5d2703038abbc3105103d94c", + BARREL_M700_762X51_20_INCH_THREADED = "5bfebc320db8340019668d79", + BARREL_M700_762X51_26_INCH = "5bfebc250db834001a6694e1", + BARREL_M700_762X51_26_INCH_STAINLESS_STEEL = "5d2702e88abbc31ed91efc44", + BARREL_M870_12GA_355MM = "5a787f25c5856700186c4ab9", + BARREL_M870_12GA_508MM = "5a787f7ac5856700177af660", + BARREL_M870_12GA_508MM_BARREL_WITH_A_FIXED_SIGHT = "5a787ebcc5856700142fdd98", + BARREL_M870_12GA_660MM_VENT_RIB = "5a787fadc5856700155a6ca1", + BARREL_M870_12GA_SAWEDOFF_325MM = "5a787fdfc5856700142fdd9a", + BARREL_M9A3_9X19_THREADED = "5cadc1c6ae9215000f2775a4", + BARREL_MCX_300_BLK_171MM = "5fbbfabed5cb881a7363194e", + BARREL_MCX_300_BLK_229MM = "5fbbfacda56d053a3543f799", + BARREL_MCX_SPEAR_68X51_330MM = "652910565ae2ae97b80fdf35", + BARREL_MDR_556X45_16_INCH = "5c48a2852e221602b21d5923", + BARREL_MDR_762X51_16_INCH = "5dcbe9431e1f4616d354987e", + BARREL_MK18_338_LM_24_INCH = "5fc23678ab884124df0cd590", + BARREL_MK47_254MM = "60658776f2cb2e02a42ace2b", + BARREL_MK47_409MM = "6065878ac9cf8012264142fd", + BARREL_MOSIN_CARBINE_762X54R_514MM = "5bfd4cbe0db834001b73449f", + BARREL_MOSIN_RIFLE_762X54R_730MM_REGULAR = "5ae09bff5acfc4001562219d", + BARREL_MOSIN_RIFLE_762X54R_SAWEDOFF_200MM = "5bfd4cc90db834001d23e846", + BARREL_MOSIN_RIFLE_762X54R_SAWEDOFF_220MM_THREADED = "5bfd4cd60db834001c38f095", + BARREL_MOSSBERG_590A1_12GA_20_INCH = "5e87071478f43e51ca2de5e1", + BARREL_MP133_12GA_510MM = "55d4491a4bdc2d882f8b456e", + BARREL_MP133_12GA_510MM_BARREL_WITH_RIB = "560835c74bdc2dc8488b456f", + BARREL_MP133_12GA_540MM = "560836484bdc2d20478b456e", + BARREL_MP133_12GA_540MM_BARREL_WITH_RIB = "560836b64bdc2d57468b4567", + BARREL_MP133_12GA_610MM = "55d448594bdc2d8c2f8b4569", + BARREL_MP133_12GA_610MM_BARREL_WITH_RIB = "55d449444bdc2d962f8b456d", + BARREL_MP133_12GA_660MM = "560836fb4bdc2d773f8b4569", + BARREL_MP133_12GA_660MM_BARREL_WITH_RIB = "560837154bdc2da74d8b4568", + BARREL_MP133_12GA_710MM = "5608373c4bdc2dc8488b4570", + BARREL_MP133_12GA_710MM_BARREL_WITH_RIB = "560837544bdc2de22e8b456e", + BARREL_MP133_12GA_750MM = "560837824bdc2d57468b4568", + BARREL_MP133_12GA_750MM_BARREL_WITH_RIB = "5608379a4bdc2d26448b4569", + BARREL_MP153_12GA_610MM = "588200af24597742fa221dfb", + BARREL_MP153_12GA_660MM = "588200c224597743990da9ed", + BARREL_MP153_12GA_710MM = "588200cf2459774414733d55", + BARREL_MP153_12GA_750MM = "56deec93d2720bec348b4568", + BARREL_MP155_12GA_510MM = "6076c1b9f2cb2e02a42acedc", + BARREL_MP18_762X54R_600MM = "61f4012adfc9f01a816adda1", + BARREL_MP431C_12GA_510MM = "5580169d4bdc2d9d138b4585", + BARREL_MP431C_12GA_725MM = "55d447bb4bdc2d892f8b456f", + BARREL_MP43_12GA_750MM = "611a30addbdd8440277441dc", + BARREL_MP43_12GA_SAWEDOFF_310MM = "64748d02d1c009260702b526", + BARREL_MPXSD_9X19_165MM = "58aeaaa886f7744fc1560f81", + BARREL_MPX_9X19_105_INCH = "5c5db5b82e2216003a0fe71d", + BARREL_MPX_9X19_14_INCH = "5c5db5c62e22160012542255", + BARREL_MPX_9X19_203MM = "5894a2c386f77427140b8342", + BARREL_MPX_9X19_45_INCH = "5c5db5852e2216003a0fe71a", + BARREL_MPX_9X19_65_INCH = "5c5db5962e2216000e5e46eb", + BARREL_MTS25512_12GA_755MM_BARREL_WITH_RIB = "612368f58b401f4f51239b33", + BARREL_OPSKS_762X39_520MM = "634eff66517ccc8a960fc735", + BARREL_ORSIS_T5000M_762X51_660MM = "5df256570dee1b22f862e9c4", + BARREL_P226_9X19_112MM = "56d5a1f7d2720bb3418b456a", + BARREL_P226_9X19_THREADED = "587de4282459771bca0ec90b", + BARREL_PKM_762X54R_658MM = "646371faf2404ab67905c8e9", + BARREL_PKP_762X54R_658MM = "64639a9aab86f8fd4300146c", + BARREL_PL15_9X19 = "602a95edda11d6478d5a06da", + BARREL_PL15_9X19_THREADED = "602a95fe4e02ce1eaa358729", + BARREL_PPSH41_762X25_106_INCH = "5ea02bb600685063ec28bfa1", + BARREL_RFB_762X51_18_INCH = "5f2aa46b878ef416f538b567", + BARREL_RPD_762X39_520MM = "6513eff1e06849f06c0957d4", + BARREL_RPD_762X39_SAWEDOFF_350MM = "65266fd43341ed9aa903dd56", + BARREL_RPK16_545X39_15_INCH = "5beec1bd0db834001e6006f3", + BARREL_RPK16_545X39_22_INCH = "5beec2820db834001b095426", + BARREL_SA58_762X51_11_INCH = "5b099a765acfc47a8607efe3", + BARREL_SA58_762X51_16_INCH = "5b7be1125acfc4001876c0e5", + BARREL_SA58_762X51_21_INCH = "5b7be1265acfc400161d0798", + BARREL_SKS_762X39_520MM = "634f02331f9f536910079b51", + BARREL_SR25_762X51_16_INCH = "5df917564a9f347bc92edca3", + BARREL_SR25_762X51_20_INCH = "5dfa397fb11454561e39246c", + BARREL_STEYR_AUG_A1_556X45_16_INCH = "6333f05d1bc0e6217a0e9d34", + BARREL_STEYR_AUG_A1_556X45_20_INCH = "62e7c7f3c34ea971710c32fc", + BARREL_STEYR_AUG_A3_556X45_16_INCH = "630e39c3bd357927e4007c15", + BARREL_STM9_9X19_105_INCH = "603372b4da11d6478d5a07ff", + BARREL_STM9_9X19_12_INCH = "603372d154072b51b239f9e1", + BARREL_STM9_9X19_14_INCH = "603372f153a60014f970616d", + BARREL_STM9_9X19_16_INCH = "603373004e02ce1eaa358814", + BARREL_SVDS_762X54R_22_INCH = "5c471cb32e221602b177afaa", + BARREL_SVT40_762X54R_625MM = "6410758c857473525b08bb77", + BARREL_TT_762X25_116MM = "571a26d524597720680fbe8a", + BARREL_TT_762X25_116MM_GILDED = "5b3baf8f5acfc40dc5296692", + BARREL_TT_762X25_121MM_HOMESPUN_THREADED = "571a279b24597720b4066566", + BARREL_VPO215_GORNOSTAY_366TKM_23_INCH = "5de65547883dde217541644b", + BARREL_VSK94_9X39 = "645123013d52156624001fd1", + BARTER_42_SIGNATURE_BLEND_ENGLISH_TEA = "5bc9be8fd4351e00334cae6e", + BARTER_6STEN140M_MILITARY_BATTERY = "5d03794386f77420415576f5", + BARTER_AA_BATTERY = "5672cb124bdc2d1a0f8b4568", + BARTER_ADVANCED_CURRENT_CONVERTER = "6389c85357baa773a825b356", + BARTER_ALKALINE_CLEANER_FOR_HEAT_EXCHANGERS = "59faf98186f774067b6be103", + BARTER_ANALOG_THERMOMETER = "5d1b32c186f774252167a530", + BARTER_ANTIQUE_TEAPOT = "590de71386f774347051a052", + BARTER_ANTIQUE_VASE = "590de7e986f7741b096e5f32", + BARTER_APOLLO_SOYUZ_CIGARETTES = "573475fb24597737fb1379e1", + BARTER_AQUAPEPS_WATER_PURIFICATION_TABLETS = "6389c6c7dbfd5e4b95197e68", + BARTER_ARAMID_FIBER_FABRIC = "5e2af4d286f7746d4159f07a", + BARTER_AWL = "62a0a098de7ac8199358053b", + BARTER_AXEL_PARROT_FIGURINE = "62a091170b9d3c46de5b6cf2", + BARTER_BATTERED_ANTIQUE_BOOK = "5bc9c049d4351e44f824d360", + BARTER_BEAR_BUDDY_PLUSH_TOY = "62a08f4c4f842e1bd12d9d62", + BARTER_BEAR_OPERATIVE_FIGURINE = "655c652d60d0ac437100fed7", + BARTER_BOLTS = "57347c5b245977448d35f6e1", + BARTER_BOTTLE_OF_HYDROGEN_PEROXIDE = "59e361e886f774176c10a2a5", + BARTER_BOTTLE_OF_OLOLO_MULTIVITAMINS = "62a0a043cf4a99369e2624a5", + BARTER_BOTTLE_OF_SALINE_SOLUTION = "59e3606886f77417674759a5", + BARTER_BROKEN_GPHONE_SMARTPHONE = "56742c324bdc2d150f8b456d", + BARTER_BROKEN_GPHONE_X_SMARTPHONE = "5c1265fc86f7743f896a21c2", + BARTER_BROKEN_LCD = "5d1b309586f77425227d1676", + BARTER_BRONZE_LION_FIGURINE = "59e3639286f7741777737013", + BARTER_BULBEX_CABLE_CUTTER = "619cbfeb6b8a1b37a54eebfa", + BARTER_BUNDLE_OF_WIRES = "5c06779c86f77426e00dd782", + BARTER_CAN_OF_DR_LUPOS_COFFEE_BEANS = "5e54f6af86f7742199090bf3", + BARTER_CAN_OF_MAJAICA_COFFEE_BEANS = "5af0484c86f7740f02001f7f", + BARTER_CAN_OF_THERMITE = "60391a8b3364dc22b04d0ce5", + BARTER_CAN_OF_WHITE_SALT = "62a09ee4cf4a99369e262453", + BARTER_CAPACITORS = "5c06782b86f77426df5407d2", + BARTER_CAR_BATTERY = "5733279d245977289b77ec24", + BARTER_CAT_FIGURINE = "59e3658a86f7741776641ac4", + BARTER_CHAINLET = "573474f924597738002c6174", + BARTER_CHAIN_WITH_PROKILL_MEDALLION = "5c1267ee86f77416ec610f72", + BARTER_CHRISTMAS_TREE_ORNAMENT_RED = "5df8a6a186f77412640e2e80", + BARTER_CHRISTMAS_TREE_ORNAMENT_SILVER = "5df8a72c86f77412640e2e83", + BARTER_CHRISTMAS_TREE_ORNAMENT_VIOLET = "5df8a77486f77412672a1e3f", + BARTER_CLASSIC_MATCHES = "57347b8b24597737dd42e192", + BARTER_CLIN_WINDOW_CLEANER = "59e358a886f7741776641ac3", + BARTER_CONSTRUCTION_MEASURING_TAPE = "590c2c9c86f774245b1f03f2", + BARTER_CORDURA_POLYAMIDE_FABRIC = "5e2af41e86f774755a234b67", + BARTER_CORRUGATED_HOSE = "59e35cbb86f7741778269d83", + BARTER_CPU_FAN = "5734779624597737e04bf329", + BARTER_CRICKENT_LIGHTER = "56742c284bdc2d98058b456d", + BARTER_CULTIST_FIGURINE = "655c669103999d3c810c025b", + BARTER_CYCLON_RECHARGEABLE_BATTERY = "5e2aee0a86f774755a234b62", + BARTER_DAMAGED_HARD_DRIVE = "590a386e86f77429692b27ab", + BARTER_DEADLYSLOBS_BEARD_OIL = "5bc9b9ecd4351e3bac122519", + BARTER_DED_MOROZ_FIGURINE = "655c67ab0d37ca5135388f4b", + BARTER_DEN_FIGURINE = "66572b8d80b1cd4b6a67847f", + BARTER_DISPOSABLE_SYRINGE = "5d1b3f2d86f774253763b735", + BARTER_DOGTAGT = "5b9b9020e7ef6f5716480215", + BARTER_DOGTAG_BEAR = "59f32bb586f774757e1e8442", + BARTER_DOGTAG_BEAR_EOD = "6662e9aca7e0b43baa3d5f74", + BARTER_DOGTAG_BEAR_TUE = "6662e9cda7e0b43baa3d5f76", + BARTER_DOGTAG_USEC = "59f32c3b86f77472a31742f0", + BARTER_DOGTAG_USEC_EOD = "6662e9f37fa79a6d83730fa0", + BARTER_DOGTAG_USEC_TUE = "6662ea05f6259762c56f3189", + BARTER_DRY_FUEL = "590a373286f774287540368b", + BARTER_DUCT_TAPE = "57347c1124597737fb1379e3", + BARTER_DVD_DRIVE = "5734781f24597737e04bf32a", + BARTER_D_SIZE_BATTERY = "5672cb304bdc2dc2088b456a", + BARTER_ELECTRIC_DRILL = "59e35de086f7741778269d84", + BARTER_ELECTRIC_MOTOR = "5d1b2fa286f77425227d1674", + BARTER_ELECTRONIC_COMPONENTS = "6389c70ca33d8c4cdf4932c6", + BARTER_ENERGYSAVING_LAMP = "590a3cd386f77436f20848cb", + BARTER_EXPEDITIONARY_FUEL_TANK = "5d1b371186f774253763a656", + BARTER_FARFORWARD_GPS_SIGNAL_AMPLIFIER_UNIT = "6389c7f115805221fb410466", + BARTER_FIERCE_BLOW_SLEDGEHAMMER = "63a0b208f444d32d6f03ea1e", + BARTER_FIREKLEAN_GUN_LUBE = "5bc9b355d4351e6d1509862a", + BARTER_FLAT_SCREWDRIVER = "5d63d33b86f7746ea9275524", + BARTER_FLAT_SCREWDRIVER_LONG = "5d4042a986f7743185265463", + BARTER_FLEECE_FABRIC = "5e2af47786f7746d404f3aaa", + BARTER_FP100_FILTER_ABSORBER = "5d1b2f3f86f774252167a52c", + BARTER_FUEL_CONDITIONER = "5b43575a86f77424f443fe62", + BARTER_GAS_ANALYZER = "590a3efd86f77437d351a25b", + BARTER_GAS_MASK_AIR_FILTER = "590c595c86f7747884343ad7", + BARTER_GEIGERMULLER_COUNTER = "5672cb724bdc2dc2088b456b", + BARTER_GOLDEN_1GPHONE_SMARTPHONE = "5bc9b720d4351e450201234b", + BARTER_GOLDEN_EGG = "62a09cfe4f842e1bd12da3e4", + BARTER_GOLDEN_NECK_CHAIN = "5734758f24597738025ee253", + BARTER_GOLDEN_ROOSTER_FIGURINE = "5bc9bc53d4351e00367fbcee", + BARTER_GOLD_SKULL_RING = "5d235a5986f77443f6329bc6", + BARTER_GRAPHICS_CARD = "57347ca924597744596b4e71", + BARTER_GREENBAT_LITHIUM_BATTERY = "5e2aedd986f7746d404f3aa4", + BARTER_GUNPOWDER_EAGLE = "5d6fc78386f77449d825f9dc", + BARTER_GUNPOWDER_HAWK = "5d6fc87386f77449db3db94e", + BARTER_GUNPOWDER_KITE = "590c5a7286f7747884343aea", + BARTER_HAND_DRILL = "5d1b317c86f7742523398392", + BARTER_HORSE_FIGURINE = "573478bc24597738002c6175", + BARTER_HUNTING_MATCHES = "5e2af2bc86f7746d3f3c33fc", + BARTER_INSULATING_TAPE = "5734795124597738002c6176", + BARTER_IRIDIUM_MILITARY_THERMAL_VISION_MODULE = "5d0377ce86f774186372f689", + BARTER_KEKTAPE_DUCT_TAPE = "5e2af29386f7746d4159f077", + BARTER_KILLA_FIGURINE = "66572c82ad599021091c6118", + BARTER_LEDX_SKIN_TRANSILLUMINATOR = "5c0530ee86f774697952d952", + BARTER_LEGA_MEDAL = "6656560053eaaa7a23349c86", + BARTER_LIGHT_BULB = "5d1b392c86f77425243e98fe", + BARTER_LOCKED_EQUIPMENT_RATE_COMMON = "66588b514de4820934746dc6", + BARTER_LOCKED_EQUIPMENT_RATE_EPIC = "6658285190486915542256c4", + BARTER_LOCKED_EQUIPMENT_RATE_RARE = "66571bf06a723f7f005a0619", + BARTER_LOCKED_SUPPLY_RATE_COMMON = "66588ba291f6e93c4c06efef", + BARTER_LOCKED_SUPPLY_RATE_EPIC = "665828c44de4820934746ce4", + BARTER_LOCKED_SUPPLY_RATE_RARE = "66572b88ac60f009f270d1dc", + BARTER_LOCKED_VALUABLES_RATE_COMMON = "66588bb047fbd536a674240e", + BARTER_LOCKED_VALUABLES_RATE_EPIC = "665828f490486915542256c6", + BARTER_LOCKED_VALUABLES_RATE_RARE = "66572bb3ac60f009f270d1df", + BARTER_LOCKED_WEAPON_RATE_COMMON = "66588b6dcb48a73e674b2649", + BARTER_LOCKED_WEAPON_RATE_EPIC = "66582889efd94e2d665b14a2", + BARTER_LOCKED_WEAPON_RATE_RARE = "66572b3f6a723f7f005a066c", + BARTER_LOOT_LORD_PLUSHIE = "60b0f7057897d47c5b04ab94", + BARTER_LVNDMARKS_RAT_POISON = "60b0f561c4449e4cb624c1d7", + BARTER_MAGNET = "590a391c86f774385a33c404", + BARTER_MALBORO_CIGARETTES = "573476d324597737da2adc13", + BARTER_MEDICAL_BLOODSET = "5b4335ba86f7744d2837a264", + BARTER_MEDICAL_TOOLS = "619cc01e0a7c3a1a2731940c", + BARTER_METAL_CUTTING_SCISSORS = "5d40419286f774318526545f", + BARTER_METAL_FUEL_TANK = "5d1b36a186f7742523398433", + BARTER_METAL_SPARE_PARTS = "61bf7b6302b3924be92fa8c3", + BARTER_MICROCONTROLLER_BOARD = "6389c7750ef44505c87f5996", + BARTER_MILITARY_CABLE = "5d0375ff86f774186372f685", + BARTER_MILITARY_CIRCUIT_BOARD = "5d0376a486f7747d8050965c", + BARTER_MILITARY_COFDM_WIRELESS_SIGNAL_TRANSMITTER = "5c052f6886f7746b1e3db148", + BARTER_MILITARY_CORRUGATED_TUBE = "619cbf476b8a1b37a54eebf8", + BARTER_MILITARY_GYROTACHOMETER = "5d03784a86f774203e7e0c4d", + BARTER_MILITARY_POWER_FILTER = "5d0378d486f77420421a5ff4", + BARTER_MR_KERMANS_CAT_HOLOGRAM = "6638a5474e92f038531e210e", + BARTER_NIPPERS = "5d40425986f7743185265461", + BARTER_NIXXOR_LENS = "5d1b2ffd86f77425243e8d17", + BARTER_OFZ_30X165MM_SHELL = "5d0379a886f77420407aa271", + BARTER_OLD_FIRESTEEL = "5bc9c377d4351e3bac12251b", + BARTER_OPHTHALMOSCOPE = "5af0534a86f7743b6f354284", + BARTER_ORTODONTOX_TOOTHPASTE = "5d4041f086f7743cac3f22a7", + BARTER_OX_BLEACH = "59e3556c86f7741776641ac2", + BARTER_PACK_OF_ARSENIY_BUCKWHEAT = "6389c6463485cf0eeb260715", + BARTER_PACK_OF_CHLORINE = "5e2af02c86f7746d420957d4", + BARTER_PACK_OF_NAILS = "590c31c586f774245e3141b2", + BARTER_PACK_OF_SCREWS = "59e35ef086f7741777737012", + BARTER_PACK_OF_SODIUM_BICARBONATE = "59e35abd86f7741778269d82", + BARTER_PAID_ANTIROACH_SPRAY = "59e3596386f774176c10a2a2", + BARTER_PARACORD = "5c12688486f77426843c7d32", + BARTER_PC_CPU = "573477e124597737dd42e191", + BARTER_PHASED_ARRAY_ELEMENT = "5d03775b86f774203e7e0c4b", + BARTER_PHASE_CONTROL_RELAY = "5d1b313086f77425227d1678", + BARTER_PHYSICAL_BITCOIN = "59faff1d86f7746c51718c9c", + BARTER_PIECE_OF_PLEXIGLASS = "59e366c186f7741778269d85", + BARTER_PILE_OF_MEDS = "5d1b3a5d86f774252167ba22", + BARTER_PIPE_GRIP_WRENCH = "619cbfccbedcde2f5b3f7bdd", + BARTER_PLIERS = "590c2b4386f77425357b6123", + BARTER_PLIERS_ELITE = "5af04b6486f774195a3ebb49", + BARTER_POLITICIAN_MUTKEVICH_FIGURINE = "655c66e40b2de553b618d4b8", + BARTER_PORTABLE_DEFIBRILLATOR = "5c052e6986f7746b207bc3c9", + BARTER_PORTABLE_POWERBANK = "5af0561e86f7745f5f3ad6ac", + BARTER_POWER_CORD = "59e36c6f86f774176c10a2a7", + BARTER_POWER_SUPPLY_UNIT = "57347c2e24597744902c94a1", + BARTER_PRESSURE_GAUGE = "5d1b327086f7742525194449", + BARTER_PRESS_PASS_ISSUED_FOR_NOICEGUY = "62a09cb7a04c0c5c6e0a84f8", + BARTER_PRINTED_CIRCUIT_BOARD = "590a3b0486f7743954552bdb", + BARTER_PRINTER_PAPER = "577e1c9d2459773cd707c525", + BARTER_PROPANE_TANK_5L = "59fafb5d86f774067a6f2084", + BARTER_RADIATOR_HELIX = "5d1c774f86f7746d6620f8db", + BARTER_RAM = "57347baf24597738002c6178", + BARTER_RATCHET_WRENCH = "60391afc25aff57af81f7085", + BARTER_RAVEN_FIGURINE = "5e54f62086f774219b0f1937", + BARTER_RECHARGEABLE_BATTERY = "590a358486f77429692b2790", + BARTER_REPELLENT = "5e2aef7986f7746d3f3c33f5", + BARTER_RESHALA_FIGURINE = "66572be36a723f7f005a066e", + BARTER_RIPSTOP_FABRIC = "5e2af4a786f7746d3f3c3400", + BARTER_ROLER_SUBMARINER_GOLD_WRIST_WATCH = "59faf7ca86f7740dbe19f6c2", + BARTER_ROUND_PLIERS = "5d1b31ce86f7742523398394", + BARTER_RYZHY_FIGURINE = "655c67782a1356436041c9c5", + BARTER_SCAV_FIGURINE = "655c673673a43e23e857aebd", + BARTER_SCHAMAN_SHAMPOO = "5d40412b86f7743cb332ac3a", + BARTER_SCREWDRIVER = "590c2d8786f774245b1f03f3", + BARTER_SCREW_NUTS = "57347c77245977448d35f6e2", + BARTER_SET_OF_FILES_MASTER = "62a0a0bb621468534a797ad5", + BARTER_SEWING_KIT = "61bf83814088ec1a363d7097", + BARTER_SHUSTRILO_SEALING_FOAM = "590c35a486f774273531c822", + BARTER_SILICONE_TUBE = "5d1b39a386f774252339976f", + BARTER_SILVER_BADGE = "5bc9bdb8d4351e003562b8a1", + BARTER_SMOKED_CHIMNEY_DRAIN_CLEANER = "5e2af00086f7746d3f3c33f7", + BARTER_SOAP = "5c13cd2486f774072c757944", + BARTER_SPARK_PLUG = "590a3c0a86f774385a33c450", + BARTER_STRIKE_CIGARETTES = "5734770f24597738025ee254", + BARTER_SURVL_SURVIVOR_LIGHTER = "5e2af37686f774755a234b65", + BARTER_TAGILLA_FIGURINE = "66572cbdad599021091c611a", + BARTER_TETRIZ_PORTABLE_GAME_CONSOLE = "5c12620d86f7743f8b198b72", + BARTER_TOILET_PAPER = "5c13cef886f774072e618e82", + BARTER_TOOLSET = "590c2e1186f77425357b6124", + BARTER_TOOTHPASTE = "57347c93245977448d35f6e3", + BARTER_TP200_TNT_BRICK = "60391b0fb847c71012789415", + BARTER_TSHAPED_PLUG = "57347cd0245977445a2d6ff1", + BARTER_TUBE_OF_POXERAM_COLD_WELDING = "5e2af22086f7746d3f3c33fa", + BARTER_UHF_RFID_READER = "5c052fb986f7746b2101e909", + BARTER_ULTRALINK_SATELLITE_INTERNET_STATION = "6389c88b33a719183c7f63b6", + BARTER_ULTRAVIOLET_LAMP = "590a3d9c86f774385926e510", + BARTER_USB_ADAPTER = "5909e99886f7740c983b9984", + BARTER_USEC_OPERATIVE_FIGURINE = "655c663a6689c676ce57af85", + BARTER_UZRGM_GRENADE_FUZE = "5e2af51086f7746d3f3c3402", + BARTER_VERITAS_GUITAR_PICK = "5f745ee30acaeb0d490d8c5b", + BARTER_VIRTEX_PROGRAMMABLE_PROCESSOR = "5c05308086f7746b2101e90b", + BARTER_VPX_FLASH_STORAGE_MODULE = "5c05300686f7746dce784e5d", + BARTER_WATER_FILTER = "5d1b385e86f774252167b98a", + BARTER_WD40_100ML = "590c5bbd86f774785762df04", + BARTER_WD40_400ML = "590c5c9f86f77477c91c36e7", + BARTER_WEAPON_PARTS = "5d1c819a86f774771b0acd6c", + BARTER_WILSTON_CIGARETTES = "573476f124597737e04bf328", + BARTER_WOODEN_CLOCK = "59e3647686f774176a362507", + BARTER_WORKING_LCD = "5d1b304286f774253763a528", + BARTER_WRENCH = "590c311186f77424d1667482", + BARTER_XENOMORPH_SEALING_FOAM = "590c346786f77423e50ed342", + BARTER_ZIBBO_LIGHTER = "56742c2e4bdc2d95058b456d", + BIPOD_HARRIS_HBR = "5888961624597754281f93f3", + BIPOD_HK_G36 = "622b397c9a3d4327e41843b6", + BIPOD_PK = "6464d870bb2c580352070cc4", + BIPOD_RPD = "6513f037e06849f06c0957d7", + BIPOD_SV98 = "56ea8222d2720b69698b4567", + BUILTININSERTS_6B13_KILLA_LEVEL3_SOFT_ARMOR_BACK = "6575ea4cf6a13a7b7100adc4", + BUILTININSERTS_6B13_KILLA_LEVEL3_SOFT_ARMOR_COLLAR = "6575ea719c7cad336508e418", + BUILTININSERTS_6B13_KILLA_LEVEL3_SOFT_ARMOR_FRONT = "6575ea3060703324250610da", + BUILTININSERTS_6B13_KILLA_LEVEL3_SOFT_ARMOR_GROIN_FRONT = "6575ea7c60703324250610e2", + BUILTININSERTS_6B13_KILLA_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "6575ea5cf6a13a7b7100adc8", + BUILTININSERTS_6B13_KILLA_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "6575ea6760703324250610de", + BUILTININSERTS_6B13_LEVEL2_SOFT_ARMOR_BACK = "654a8976f414fcea4004d78b", + BUILTININSERTS_6B13_LEVEL2_SOFT_ARMOR_COLLAR = "654a8ae00337d53f9102c2aa", + BUILTININSERTS_6B13_LEVEL2_SOFT_ARMOR_FRONT = "654a8b0b0337d53f9102c2ae", + BUILTININSERTS_6B13_LEVEL2_SOFT_ARMOR_GROIN = "654a8bc5f414fcea4004d79b", + BUILTININSERTS_6B13_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "654a8b3df414fcea4004d78f", + BUILTININSERTS_6B13_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "654a8b80f414fcea4004d797", + BUILTININSERTS_6B231_LEVEL2_SOFT_ARMOR_BACK = "6571baa74cb80d995d0a1490", + BUILTININSERTS_6B231_LEVEL2_SOFT_ARMOR_COLLAR = "6571babb4076795e5e07383f", + BUILTININSERTS_6B231_LEVEL2_SOFT_ARMOR_FRONT = "6571b27a6d84a2b8b6007f92", + BUILTININSERTS_6B231_LEVEL2_SOFT_ARMOR_GROIN_BACK = "6571babf4cb80d995d0a1494", + BUILTININSERTS_6B231_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "6571bac34076795e5e073843", + BUILTININSERTS_6B231_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "6571baac6d84a2b8b6007fa3", + BUILTININSERTS_6B231_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "6571bab0f41985531a038091", + BUILTININSERTS_6B232_LEVEL2_SOFT_ARMOR_BACK = "6570800612755ae0d907acf8", + BUILTININSERTS_6B232_LEVEL2_SOFT_ARMOR_COLLAR = "657080ca12755ae0d907ad5e", + BUILTININSERTS_6B232_LEVEL2_SOFT_ARMOR_FRONT = "65707fc348c7a887f2010432", + BUILTININSERTS_6B232_LEVEL2_SOFT_ARMOR_GROIN_BACK = "65708165696fe382cf073255", + BUILTININSERTS_6B232_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "65708122f65e2491bf009755", + BUILTININSERTS_6B232_LEVEL2_SOFT_ARMOR_LEFT = "65708070f65e2491bf00972c", + BUILTININSERTS_6B232_LEVEL2_SOFT_ARMOR_RIGHT = "657080a212755ae0d907ad04", + BUILTININSERTS_6B2_LEVEL2_SOFT_ARMOR_BACK = "656fd89bf5a9631d4e042575", + BUILTININSERTS_6B2_LEVEL2_SOFT_ARMOR_FRONT = "656fd7c32668ef0402028fb9", + BUILTININSERTS_6B3TM_LEVEL2_SOFT_ARMOR_BACK = "65764fae2bc38ef78e07648d", + BUILTININSERTS_6B3TM_LEVEL2_SOFT_ARMOR_GROIN_BACK = "6576500f526e320fbe03577f", + BUILTININSERTS_6B3TM_LEVEL4_SOFT_ARMOR_FRONT = "65764e1e2bc38ef78e076489", + BUILTININSERTS_6B3TM_LEVEL4_SOFT_ARMOR_GROIN_FRONT = "6576504b526e320fbe035783", + BUILTININSERTS_6B43_6A_LEVEL3_SOFT_ARMOR_BACK = "6575ce45dc9932aed601c616", + BUILTININSERTS_6B43_6A_LEVEL3_SOFT_ARMOR_COLLAR = "6575ce6f16c2762fba005806", + BUILTININSERTS_6B43_6A_LEVEL3_SOFT_ARMOR_FRONT = "6575ce3716c2762fba0057fd", + BUILTININSERTS_6B43_6A_LEVEL3_SOFT_ARMOR_GROIN_FRONT = "6575ce8bdc9932aed601c61e", + BUILTININSERTS_6B43_6A_LEVEL3_SOFT_ARMOR_LEFT_ARM = "6575ce9db15fef3dd4051628", + BUILTININSERTS_6B43_6A_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "6575ce5016c2762fba005802", + BUILTININSERTS_6B43_6A_LEVEL3_SOFT_ARMOR_RIGHT_ARM = "6575cea8b15fef3dd405162c", + BUILTININSERTS_6B43_6A_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "6575ce5befc786cd9101a671", + BUILTININSERTS_6B515_LEVEL2_SOFT_ARMOR_COLLAR = "65708afe4a747dbb63005eee", + BUILTININSERTS_6B515_LEVEL4_SOFT_ARMOR_BACK = "6570880f4a747dbb63005ee5", + BUILTININSERTS_6B515_LEVEL4_SOFT_ARMOR_FRONT = "657087577f6d4590ac0d2109", + BUILTININSERTS_6B515_LEVEL4_SOFT_ARMOR_GROIN = "65708b4c4a747dbb63005ef3", + BUILTININSERTS_6B516_LEVEL2_SOFT_ARMOR_BACK = "65764bc22bc38ef78e076485", + BUILTININSERTS_6B516_LEVEL2_SOFT_ARMOR_COLLAR = "65764c39526e320fbe035777", + BUILTININSERTS_6B516_LEVEL3_SOFT_ARMOR_FRONT = "65764a4cd8537eb26a0355ee", + BUILTININSERTS_6B516_LEVEL3_SOFT_ARMOR_GROIN = "65764c6b526e320fbe03577b", + BUILTININSERTS_ADEPT_NEOSTEEL_LEVEL3_HELMET_ARMOR_NAPE = "657f9ef6c6679fefb3051e1f", + BUILTININSERTS_ADEPT_NEOSTEEL_LEVEL3_HELMET_ARMOR_TOP = "657f9eb7e9433140ad0baf86", + BUILTININSERTS_ALTIN_LEVEL5_HELMET_ARMOR_EARS = "657bc107aab96fccee08be9f", + BUILTININSERTS_ALTIN_LEVEL5_HELMET_ARMOR_NAPE = "657bc0d8a1c61ee0c303632f", + BUILTININSERTS_ALTIN_LEVEL5_HELMET_ARMOR_TOP = "657bc06daab96fccee08be9b", + BUILTININSERTS_ANA_M1_LEVEL2_SOFT_ARMOR_BACK = "65730c2213a2f660f60bea96", + BUILTININSERTS_ANA_M1_LEVEL2_SOFT_ARMOR_FRONT = "65730c0e292ecadbfa09ad49", + BUILTININSERTS_ANA_M1_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65730c2b292ecadbfa09ad50", + BUILTININSERTS_ANA_M1_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "65730c35292ecadbfa09ad54", + BUILTININSERTS_ANA_TACT_M2_LEVEL3_SOFT_ARMOR_BACK = "6570f71dd67d0309980a7af8", + BUILTININSERTS_ANA_TACT_M2_LEVEL3_SOFT_ARMOR_FRONT = "6570f6e774d84423df065f21", + BUILTININSERTS_ANA_TACT_M2_LEVEL3_SOFT_ARMOR_LEFT = "6570f74774d84423df065f25", + BUILTININSERTS_ANA_TACT_M2_LEVEL3_SOFT_ARMOR_RIGHT = "6570f79c4c65ab77a6015121", + BUILTININSERTS_ARSARMA_A18_LEVEL2_SOFT_ARMOR_BACK = "6570e479a6560e4ee50c2b02", + BUILTININSERTS_ARSARMA_A18_LEVEL2_SOFT_ARMOR_FRONT = "6570e5100b57c03ec90b970a", + BUILTININSERTS_ARSARMA_A18_LEVEL2_SOFT_ARMOR_LEFT = "6570e5674cc0d2ab1e05edbb", + BUILTININSERTS_ARSARMA_A18_LEVEL2_SOFT_ARMOR_RIGHT = "6570e59b0b57c03ec90b970e", + BUILTININSERTS_ARS_CPC_LEVEL3_SOFT_ARMOR_BACK = "6575ef6bf6a13a7b7100b093", + BUILTININSERTS_ARS_CPC_LEVEL3_SOFT_ARMOR_FRONT = "6575ef599c7cad336508e453", + BUILTININSERTS_ARS_CPC_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "6575ef78da698a4e980677eb", + BUILTININSERTS_ARS_CPC_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "6575ef7f9c7cad336508e457", + BUILTININSERTS_AVS_MBAV_LEVEL3_SOFT_ARMOR_BACK = "6575f5e1da698a4e98067869", + BUILTININSERTS_AVS_MBAV_LEVEL3_SOFT_ARMOR_FRONT = "6575f5cbf6a13a7b7100b0bf", + BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_BACK = "657322a4cea9255e21023651", + BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_FRONT = "657322988c1cc6dcd9098b2d", + BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657322acd9d89ff7ac0d961b", + BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "657322b7d9d89ff7ac0d961f", + BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_BACK = "6573102b292ecadbfa09b38d", + BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_FRONT = "6573101e292ecadbfa09b389", + BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65731038292ecadbfa09b391", + BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "65731045f31d5be00e08a75a", + BUILTININSERTS_BNTI_LSHZ_2DTM_LEVEL4_HELMET_ARMOR_EARS = "657fa07387e11c61f70bface", + BUILTININSERTS_BNTI_LSHZ_2DTM_LEVEL4_HELMET_ARMOR_NAPE = "657fa04ac6679fefb3051e24", + BUILTININSERTS_BNTI_LSHZ_2DTM_LEVEL4_HELMET_ARMOR_TOP = "657fa009d4caf976440afe3a", + BUILTININSERTS_CLASS_TOR2_LEVEL3_HELMET_ARMOR_EARS = "657fa186d4caf976440afe42", + BUILTININSERTS_CLASS_TOR2_LEVEL3_HELMET_ARMOR_NAPE = "657fa168e9433140ad0baf8e", + BUILTININSERTS_CLASS_TOR2_LEVEL3_HELMET_ARMOR_TOP = "657fa0fcd4caf976440afe3e", + BUILTININSERTS_CQC_MK4A_LEVEL2_SOFT_ARMOR_BACK = "6570fa1f4c65ab77a601512f", + BUILTININSERTS_CQC_MK4A_LEVEL2_SOFT_ARMOR_COLLAR = "6570fb8f4c65ab77a601514d", + BUILTININSERTS_CQC_MK4A_LEVEL2_SOFT_ARMOR_FRONT = "6570fae34c65ab77a6015146", + BUILTININSERTS_CQC_MK4A_LEVEL2_SOFT_ARMOR_LEFT = "6570fb22584a51c23e03251f", + BUILTININSERTS_CQC_MK4A_LEVEL2_SOFT_ARMOR_LEFT_ARM = "6570fbdd74d84423df065f60", + BUILTININSERTS_CQC_MK4A_LEVEL2_SOFT_ARMOR_RIGHT = "6570fb6ad3eefd23430f8c7c", + BUILTININSERTS_CQC_MK4A_LEVEL2_SOFT_ARMOR_RIGHT_ARM = "6570fc41d3eefd23430f8c83", + BUILTININSERTS_CQC_MK4A_P_LEVEL3_SOFT_ARMOR_BACK = "657333232cc8dfad2c0a3d97", + BUILTININSERTS_CQC_MK4A_P_LEVEL3_SOFT_ARMOR_COLLAR = "6573334aca0ca984940a2d5b", + BUILTININSERTS_CQC_MK4A_P_LEVEL3_SOFT_ARMOR_FRONT = "65733312ca0ca984940a2d53", + BUILTININSERTS_CQC_MK4A_P_LEVEL3_SOFT_ARMOR_LEFT_ARM = "65733375b7a8d286530e3dd7", + BUILTININSERTS_CQC_MK4A_P_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657333302cc8dfad2c0a3d9b", + BUILTININSERTS_CQC_MK4A_P_LEVEL3_SOFT_ARMOR_RIGHT_ARM = "6573337f2cc8dfad2c0a3da7", + BUILTININSERTS_CQC_MK4A_P_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "6573333eca0ca984940a2d57", + BUILTININSERTS_CRYE_AVS_LEVEL3_SOFT_ARMOR_BACK = "6570e87c23c1f638ef0b0ee2", + BUILTININSERTS_CRYE_AVS_LEVEL3_SOFT_ARMOR_FRONT = "6570e83223c1f638ef0b0ede", + BUILTININSERTS_CRYE_AVS_LEVEL3_SOFT_ARMOR_GROIN = "6570e90b3a5689d85f08db97", + BUILTININSERTS_CRYE_AVS_LEVEL3_SOFT_ARMOR_LEFT = "6570e8a623c1f638ef0b0ee6", + BUILTININSERTS_CRYE_AVS_LEVEL3_SOFT_ARMOR_RIGHT = "6570e8e7ab49e964120b4563", + BUILTININSERTS_CRYE_CPC_LEVEL3_SOFT_ARMOR_BACK = "6575f25ada698a4e98067836", + BUILTININSERTS_CRYE_CPC_LEVEL3_SOFT_ARMOR_FRONT = "6575f24ff6a13a7b7100b09e", + BUILTININSERTS_CRYE_CPC_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "6575f2649cfdfe416f0399b8", + BUILTININSERTS_CRYE_CPC_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "6575f26d9c7cad336508e480", + BUILTININSERTS_CRYE_PRECISION_AIRFRAME_LEVEL4_HELMET_ARMOR_NAPE = "657f98fbada5fadd1f07a585", + BUILTININSERTS_CRYE_PRECISION_AIRFRAME_LEVEL4_HELMET_ARMOR_TOP = "657f9897f4c82973640b235e", + BUILTININSERTS_DEFENDER2_LEVEL3_SOFT_ARMOR_BACK = "65732df4d0acf75aea06c87b", + BUILTININSERTS_DEFENDER2_LEVEL3_SOFT_ARMOR_COLLAR = "65732e215d3a3129fb05f3e1", + BUILTININSERTS_DEFENDER2_LEVEL3_SOFT_ARMOR_FRONT = "65732de75d3a3129fb05f3dd", + BUILTININSERTS_DEFENDER2_LEVEL3_SOFT_ARMOR_GROIN_FRONT = "65732e30dd8739f6440ef383", + BUILTININSERTS_DEFENDER2_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "65732e05d0acf75aea06c87f", + BUILTININSERTS_DEFENDER2_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "65732e0f6784ca384b0167ad", + BUILTININSERTS_DIAMOND_AGE_BASTION_LEVEL4_HELMET_ARMOR_NAPE = "657f9a94ada5fadd1f07a589", + BUILTININSERTS_DIAMOND_AGE_BASTION_LEVEL4_HELMET_ARMOR_TOP = "657f9a55c6679fefb3051e19", + BUILTININSERTS_DJETA_PSH97_LEVEL2_HELMET_ARMOR_EARS = "657ba75e23918923cb0df573", + BUILTININSERTS_DJETA_PSH97_LEVEL2_HELMET_ARMOR_NAPE = "657ba737b7e9ca9a02045bf6", + BUILTININSERTS_DJETA_PSH97_LEVEL2_HELMET_ARMOR_SHIELD = "658188edf026a90c1708c827", + BUILTININSERTS_DJETA_PSH97_LEVEL2_HELMET_ARMOR_TOP = "657ba6c3c6f689d3a205b857", + BUILTININSERTS_DRD_LEVEL3_SOFT_ARMOR_BACK = "6572e059371fccfbf909d5dc", + BUILTININSERTS_DRD_LEVEL3_SOFT_ARMOR_FRONT = "6572e048371fccfbf909d5d8", + BUILTININSERTS_DRD_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "6572e06219b4b511af012f89", + BUILTININSERTS_DRD_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "6572e06819b4b511af012f8d", + BUILTININSERTS_EXFIL_LEVEL4_HELMET_ARMOR_NAPE = "655200ba0ef76cf7be09d528", + BUILTININSERTS_EXFIL_LEVEL4_HELMET_ARMOR_TOP = "6551fec55d0cf82e51014288", + BUILTININSERTS_FIREFIGHTER_SHPM_LEVEL2_HELMET_ARMOR_EARS = "657ba8eab7e9ca9a02045bfd", + BUILTININSERTS_FIREFIGHTER_SHPM_LEVEL2_HELMET_ARMOR_NAPE = "657ba8bccfcf63c951052dab", + BUILTININSERTS_FIREFIGHTER_SHPM_LEVEL2_HELMET_ARMOR_SHIELD = "65818e4e566d2de69901b1b1", + BUILTININSERTS_FIREFIGHTER_SHPM_LEVEL2_HELMET_ARMOR_TOP = "657ba85ecfcf63c951052da7", + BUILTININSERTS_FORT_KIVER_M_LEVEL3_HELMET_ARMOR_EARS = "657baecbc6f689d3a205b863", + BUILTININSERTS_FORT_KIVER_M_LEVEL3_HELMET_ARMOR_NAPE = "657baeaacfcf63c951052db3", + BUILTININSERTS_FORT_KIVER_M_LEVEL3_HELMET_ARMOR_TOP = "657bae18b7e9ca9a02045c0a", + BUILTININSERTS_GALVION_CAIMAN_LEVEL3_HELMET_ARMOR_NAPE = "657bbb31b30eca9763051183", + BUILTININSERTS_GALVION_CAIMAN_LEVEL3_HELMET_ARMOR_TOP = "657bbad7a1c61ee0c3036323", + BUILTININSERTS_GJEL_LEVEL3_SOFT_ARMOR_BACK = "657326978c1cc6dcd9098b56", + BUILTININSERTS_GJEL_LEVEL3_SOFT_ARMOR_COLLAR = "657326bc5d3a3129fb05f36b", + BUILTININSERTS_GJEL_LEVEL3_SOFT_ARMOR_FRONT = "65732688d9d89ff7ac0d9c4c", + BUILTININSERTS_GJEL_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657326a28c1cc6dcd9098b5a", + BUILTININSERTS_GJEL_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "657326b08c1cc6dcd9098b5e", + BUILTININSERTS_HIGHCOM_STRIKER_ACHHC_LEVEL4_HELMET_ARMOR_NAPE = "657f9605f4c82973640b2358", + BUILTININSERTS_HIGHCOM_STRIKER_ACHHC_LEVEL4_HELMET_ARMOR_TOP = "657f95bff92cd718b701550c", + BUILTININSERTS_INTERCEPTOR_LEVEL2_SOFT_ARMOR_BACK = "6570f35cd67d0309980a7acb", + BUILTININSERTS_INTERCEPTOR_LEVEL2_SOFT_ARMOR_FRONT = "6570f30b0921c914bf07964c", + BUILTININSERTS_INTERCEPTOR_LEVEL2_SOFT_ARMOR_LEFT = "6570f3890b4ae5847f060dad", + BUILTININSERTS_INTERCEPTOR_LEVEL2_SOFT_ARMOR_RIGHT = "6570f3bb0b4ae5847f060db2", + BUILTININSERTS_IOTV_GEN4_A_LEVEL3_SOFT_ARMOR_BACK = "6575c3beefc786cd9101a5ed", + BUILTININSERTS_IOTV_GEN4_A_LEVEL3_SOFT_ARMOR_COLLAR = "6575c3ec52b7f8c76a05ee39", + BUILTININSERTS_IOTV_GEN4_A_LEVEL3_SOFT_ARMOR_FRONT = "6575c3b3dc9932aed601c5f4", + BUILTININSERTS_IOTV_GEN4_A_LEVEL3_SOFT_ARMOR_LEFT_ARM = "6575c3fd52b7f8c76a05ee3d", + BUILTININSERTS_IOTV_GEN4_A_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "6575c3cdc6700bd6b40e8a90", + BUILTININSERTS_IOTV_GEN4_A_LEVEL3_SOFT_ARMOR_RIGHT_ARM = "6575c40c52b7f8c76a05ee41", + BUILTININSERTS_IOTV_GEN4_A_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "6575c3dfdc9932aed601c5f8", + BUILTININSERTS_IOTV_GEN4_F_LEVEL3_SOFT_ARMOR_BACK = "6575c2be52b7f8c76a05ee25", + BUILTININSERTS_IOTV_GEN4_F_LEVEL3_SOFT_ARMOR_COLLAR = "6575c2e4efc786cd9101a5dd", + BUILTININSERTS_IOTV_GEN4_F_LEVEL3_SOFT_ARMOR_FRONT = "6575c2adefc786cd9101a5d9", + BUILTININSERTS_IOTV_GEN4_F_LEVEL3_SOFT_ARMOR_GROIN_BACK = "6575c326c6700bd6b40e8a80", + BUILTININSERTS_IOTV_GEN4_F_LEVEL3_SOFT_ARMOR_GROIN_FRONT = "6575c31b52b7f8c76a05ee35", + BUILTININSERTS_IOTV_GEN4_F_LEVEL3_SOFT_ARMOR_LEFT_ARM = "6575c2f7efc786cd9101a5e1", + BUILTININSERTS_IOTV_GEN4_F_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "6575c2cd52b7f8c76a05ee29", + BUILTININSERTS_IOTV_GEN4_F_LEVEL3_SOFT_ARMOR_RIGHT_ARM = "6575c30352b7f8c76a05ee31", + BUILTININSERTS_IOTV_GEN4_F_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "6575c2d852b7f8c76a05ee2d", + BUILTININSERTS_IOTV_GEN4_M_LEVEL3_SOFT_ARMOR_BACK = "6575c34bc6700bd6b40e8a84", + BUILTININSERTS_IOTV_GEN4_M_LEVEL3_SOFT_ARMOR_COLLAR = "6575c373dc9932aed601c5ec", + BUILTININSERTS_IOTV_GEN4_M_LEVEL3_SOFT_ARMOR_FRONT = "6575c342efc786cd9101a5e5", + BUILTININSERTS_IOTV_GEN4_M_LEVEL3_SOFT_ARMOR_GROIN_BACK = "6575c390efc786cd9101a5e9", + BUILTININSERTS_IOTV_GEN4_M_LEVEL3_SOFT_ARMOR_GROIN_FRONT = "6575c385dc9932aed601c5f0", + BUILTININSERTS_IOTV_GEN4_M_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "6575c35bc6700bd6b40e8a88", + BUILTININSERTS_IOTV_GEN4_M_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "6575c366c6700bd6b40e8a8c", + BUILTININSERTS_KIRASAN_LEVEL2_SOFT_ARMOR_BACK = "65705c3c14f2ed6d7d0b7738", + BUILTININSERTS_KIRASAN_LEVEL2_SOFT_ARMOR_COLLAR = "65705cea4916448ae1050897", + BUILTININSERTS_KIRASAN_LEVEL2_SOFT_ARMOR_FRONT = "65704de13e7bba58ea0285c8", + BUILTININSERTS_KIRASAN_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65705c777260e1139e091408", + BUILTININSERTS_KIRASAN_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "65705cb314f2ed6d7d0b773c", + BUILTININSERTS_KOLPAK_1S_4ML_LEVEL2_HELMET_ARMOR_EARS = "657ba57af58ba5a62501079e", + BUILTININSERTS_KOLPAK_1S_4ML_LEVEL2_HELMET_ARMOR_NAPE = "657ba5439ba22f103e08139f", + BUILTININSERTS_KOLPAK_1S_4ML_LEVEL2_HELMET_ARMOR_TOP = "657ba50c23918923cb0df56c", + BUILTININSERTS_KORA_KULON_LEVEL3_SOFT_ARMOR_BACK = "657049d23425b19bbc0502f0", + BUILTININSERTS_KORA_KULON_LEVEL3_SOFT_ARMOR_FRONT = "6570495b45d573133d0d6adb", + BUILTININSERTS_KORUNDVM_LEVEL2_SOFT_ARMOR_BACK = "65731b4fcea9255e2102360e", + BUILTININSERTS_KORUNDVM_LEVEL2_SOFT_ARMOR_COLLAR = "65731b666e709cddd001ec43", + BUILTININSERTS_KORUNDVM_LEVEL2_SOFT_ARMOR_FRONT = "65731b46cea9255e2102360a", + BUILTININSERTS_KORUNDVM_LEVEL2_SOFT_ARMOR_GROIN_BACK = "65731b6b6042b0f210020ef6", + BUILTININSERTS_KORUNDVM_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "65731b716e709cddd001ec47", + BUILTININSERTS_KORUNDVM_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65731b576e709cddd001ec3f", + BUILTININSERTS_KORUNDVM_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "65731b60ff6dc44a7d068c4a", + BUILTININSERTS_LEVEL2_SOFT_ARMOR_LEFT_ARM = "654a8b60f414fcea4004d793", + BUILTININSERTS_LEVEL2_SOFT_ARMOR_PLATE_BACK = "655751db58aa1b6dbd0cc295", + BUILTININSERTS_LEVEL2_SOFT_ARMOR_PLATE_FRONT = "6557519ac9b1d9bdcb0777e1", + BUILTININSERTS_LEVEL2_SOFT_ARMOR_RIGHT_ARM = "654a8ba90337d53f9102c2b2", + BUILTININSERTS_LEVEL3_SOFT_ARMOR_BACK = "64ad2d8d7e2fcecf0305533f", + BUILTININSERTS_LEVEL3_SOFT_ARMOR_COLLAR = "64ad2dd30b9840e4c80c2489", + BUILTININSERTS_LEVEL3_SOFT_ARMOR_FRONT = "64ad2dac6f9247c2f4012439", + BUILTININSERTS_LEVEL3_SOFT_ARMOR_LEFT_ARM = "64afee8e9f589807e30dc68a", + BUILTININSERTS_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "64ad2dba0b9840e4c80c2485", + BUILTININSERTS_LEVEL3_SOFT_ARMOR_RIGHT_ARM = "64afeecb977493a0ee026213", + BUILTININSERTS_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "64ad2dc66f9247c2f401243d", + BUILTININSERTS_LEVEL3_SOFT_ARMOR_STOMACH = "64afef49977493a0ee026217", + BUILTININSERTS_LSHZ5_VULKAN5_LEVEL6_HELMET_ARMOR_EARS = "657bbefeb30eca9763051189", + BUILTININSERTS_LSHZ5_VULKAN5_LEVEL6_HELMET_ARMOR_NAPE = "657bbed0aab96fccee08be96", + BUILTININSERTS_LSHZ5_VULKAN5_LEVEL6_HELMET_ARMOR_TOP = "657bbe73a1c61ee0c303632b", + BUILTININSERTS_LSHZ_LEVEL3_HELMET_ARMOR_NAPE = "657bb99db30eca976305117f", + BUILTININSERTS_LSHZ_LEVEL3_HELMET_ARMOR_TOP = "657bb92fa1c61ee0c303631f", + BUILTININSERTS_MASKA1SHA_LEVEL4_HELMET_ARMOR_EARS = "657112fa818110db4600aa6b", + BUILTININSERTS_MASKA1SHA_LEVEL4_HELMET_ARMOR_NAPE = "6571138e818110db4600aa71", + BUILTININSERTS_MASKA1SHA_LEVEL4_HELMET_ARMOR_TOP = "6571133d22996eaf11088200", + BUILTININSERTS_MMAC_LEVEL2_SOFT_ARMOR_BACK = "6572fc8c9a866b80ab07eb5d", + BUILTININSERTS_MMAC_LEVEL2_SOFT_ARMOR_FRONT = "6572fc809a866b80ab07eb59", + BUILTININSERTS_MMAC_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "6572fc989a866b80ab07eb61", + BUILTININSERTS_MMAC_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "6572fca39a866b80ab07eb65", + BUILTININSERTS_MODULE3M_LEVEL2_SOFT_ARMOR_BACK = "65702fe593b7ea9c330f4ce8", + BUILTININSERTS_MODULE3M_LEVEL2_SOFT_ARMOR_FRONT = "65702f87722744627e05cdb8", + BUILTININSERTS_MODULE3M_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "6570305d93b7ea9c330f4ced", + BUILTININSERTS_MODULE3M_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "65703472c9030b928a0a8a78", + BUILTININSERTS_MSA_GALLET_TC800_LEVEL4_HELMET_ARMOR_NAPE = "657f9cb587e11c61f70bfaca", + BUILTININSERTS_MSA_GALLET_TC800_LEVEL4_HELMET_ARMOR_TOP = "657f9c78ada5fadd1f07a58d", + BUILTININSERTS_MSA_TC2001_LEVEL4_HELMET_ARMOR_NAPE = "657f8b05f4c82973640b2348", + BUILTININSERTS_MSA_TC2001_LEVEL4_HELMET_ARMOR_TOP = "657f8a8d7db258e5600fe33d", + BUILTININSERTS_MSA_TC2002_LEVEL4_HELMET_ARMOR_NAPE = "657f8b43f92cd718b70154fb", + BUILTININSERTS_MSA_TC2002_LEVEL4_HELMET_ARMOR_TOP = "657f8b94f92cd718b70154ff", + BUILTININSERTS_NFM_HJELM_LEVEL3_HELMET_ARMOR_NAPE = "657bbcffbbd440df880b2dd5", + BUILTININSERTS_NFM_HJELM_LEVEL3_HELMET_ARMOR_TOP = "657bbcc9a1c61ee0c3036327", + BUILTININSERTS_OPS_CORE_FASTMT_LEVEL4_HELMET_ARMOR_NAPE = "657f8f10f4c82973640b2350", + BUILTININSERTS_OPS_CORE_FASTMT_LEVEL4_HELMET_ARMOR_TOP = "657f8ec5f4c82973640b234c", + BUILTININSERTS_PACA_LEVEL2_SOFT_ARMOR_BACK = "65703fa06584602f7d057a8e", + BUILTININSERTS_PACA_LEVEL2_SOFT_ARMOR_FRONT = "65703d866584602f7d057a8a", + BUILTININSERTS_PACA_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65703fe46a912c8b5c03468b", + BUILTININSERTS_PACA_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "657040374e67e8ec7a0d261c", + BUILTININSERTS_RATNIK_6B47_LEVEL3_HELMET_ARMOR_EARS = "657babc6f58ba5a6250107a2", + BUILTININSERTS_RATNIK_6B47_LEVEL3_HELMET_ARMOR_NAPE = "657bab6ec6f689d3a205b85f", + BUILTININSERTS_RATNIK_6B47_LEVEL3_HELMET_ARMOR_TOP = "657baaf0b7e9ca9a02045c02", + BUILTININSERTS_RBAV_AF_LEVEL2_SOFT_ARMOR_BACK = "6572f1d60103b4a3270332db", + BUILTININSERTS_RBAV_AF_LEVEL2_SOFT_ARMOR_FRONT = "6572f1ca4c8d903cc60c874e", + BUILTININSERTS_RBAV_AF_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "6572f1f7ea457732140ce879", + BUILTININSERTS_RBAV_AF_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "6572f1e10103b4a3270332df", + BUILTININSERTS_RBAV_AF_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "6572f1edea457732140ce875", + BUILTININSERTS_REDUT_M_LEVEL3_SOFT_ARMOR_BACK = "6575dd519e27f4a85e081146", + BUILTININSERTS_REDUT_M_LEVEL3_SOFT_ARMOR_COLLAR = "6575dd769d3a0ddf660b904b", + BUILTININSERTS_REDUT_M_LEVEL3_SOFT_ARMOR_FRONT = "6575dd3e9e27f4a85e081142", + BUILTININSERTS_REDUT_M_LEVEL3_SOFT_ARMOR_GROIN_BACK = "6575dd94945bf78edd04c43c", + BUILTININSERTS_REDUT_M_LEVEL3_SOFT_ARMOR_GROIN_FRONT = "6575dd800546f8b1de093df6", + BUILTININSERTS_REDUT_M_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "6575dd64945bf78edd04c438", + BUILTININSERTS_REDUT_M_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "6575dd6e9d3a0ddf660b9047", + BUILTININSERTS_REDUT_T_LEVEL3_SOFT_ARMOR_BACK = "6575d9b8945bf78edd04c427", + BUILTININSERTS_REDUT_T_LEVEL3_SOFT_ARMOR_COLLAR = "6575d9d8945bf78edd04c42b", + BUILTININSERTS_REDUT_T_LEVEL3_SOFT_ARMOR_FRONT = "6575d9a79e27f4a85e08112d", + BUILTININSERTS_REDUT_T_LEVEL3_SOFT_ARMOR_GROIN_BACK = "6575d9f816c2762fba00588d", + BUILTININSERTS_REDUT_T_LEVEL3_SOFT_ARMOR_GROIN_FRONT = "6575d9e7945bf78edd04c42f", + BUILTININSERTS_REDUT_T_LEVEL3_SOFT_ARMOR_LEFT_ARM = "6575da07945bf78edd04c433", + BUILTININSERTS_REDUT_T_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "6575d9c40546f8b1de093dee", + BUILTININSERTS_REDUT_T_LEVEL3_SOFT_ARMOR_RIGHT_ARM = "6575da159e27f4a85e081131", + BUILTININSERTS_REDUT_T_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "6575d9cf0546f8b1de093df2", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_EARS = "65711b706d197c216005b31c", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_EYES = "65711b9b65daf6aa960c9b1b", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_JAW = "65711bc79eb8c145180dbba1", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_NAPE = "65711b489eb8c145180dbb9d", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_TOP = "65711b07a330b8c9060f7b01", + BUILTININSERTS_RYS_T_LEVEL5_HELMET_ARMOR_EARS = "657bc2e7b30eca976305118d", + BUILTININSERTS_RYS_T_LEVEL5_HELMET_ARMOR_NAPE = "657bc2c5a1c61ee0c3036333", + BUILTININSERTS_RYS_T_LEVEL5_HELMET_ARMOR_TOP = "657bc285aab96fccee08bea3", + BUILTININSERTS_SFERAS_SSSH94_LEVEL3_HELMET_ARMOR_EARS = "657bb7d7b30eca9763051176", + BUILTININSERTS_SFERAS_SSSH94_LEVEL3_HELMET_ARMOR_NAPE = "657bb79ba1c61ee0c303631a", + BUILTININSERTS_SFERAS_SSSH94_LEVEL3_HELMET_ARMOR_TOP = "657bb70486c7f9ef7a009936", + BUILTININSERTS_SHLEMOFON_TSH_4ML_LEVEL1_HELMET_ARMOR_EARS = "657ba18923918923cb0df568", + BUILTININSERTS_SHLEMOFON_TSH_4ML_LEVEL1_HELMET_ARMOR_NAPE = "657ba145e57570b7f80a17ff", + BUILTININSERTS_SHLEMOFON_TSH_4ML_LEVEL1_HELMET_ARMOR_TOP = "657ba096e57570b7f80a17fb", + BUILTININSERTS_SLICK_BLACK_LEVEL3_SOFT_ARMOR_BACK = "6575e72660703324250610c7", + BUILTININSERTS_SLICK_BLACK_LEVEL3_SOFT_ARMOR_FRONT = "6575e71760703324250610c3", + BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_EARS = "657119fea330b8c9060f7afc", + BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_NAPE = "657119d49eb8c145180dbb95", + BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_TOP = "6571199565daf6aa960c9b10", + BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_BACK = "6572eb1b04ee6483ef039882", + BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_FRONT = "6572eb0e55beba16bc04079f", + BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "6572eb865b5eac12f10a03ee", + BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "6572eb3004ee6483ef039886", + BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "6572eb3b04ee6483ef03988a", + BUILTININSERTS_TACTEC_LEVEL3_SOFT_ARMOR_BACK = "6575bca0dc9932aed601c5d7", + BUILTININSERTS_TACTEC_LEVEL3_SOFT_ARMOR_FRONT = "6575bc88c6700bd6b40e8a57", + BUILTININSERTS_TAC_KEK_FAST_MT_LEVEL1_HELMET_ARMOR_NAPE = "657ba34b9ba22f103e08139b", + BUILTININSERTS_TAC_KEK_FAST_MT_LEVEL1_HELMET_ARMOR_TOP = "657ba2eef58ba5a625010798", + BUILTININSERTS_THORCRV_LEVEL3_SOFT_ARMOR_BACK = "6572e52f73c0eabb700109a0", + BUILTININSERTS_THORCRV_LEVEL3_SOFT_ARMOR_FRONT = "6572e5221b5bc1185508c24f", + BUILTININSERTS_THORCRV_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "6572e53c73c0eabb700109a4", + BUILTININSERTS_THORCRV_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "6572e54873c0eabb700109a8", + BUILTININSERTS_THORINTCAR_LEVEL3_SOFT_ARMOR_BACK = "6575d56b16c2762fba005818", + BUILTININSERTS_THORINTCAR_LEVEL3_SOFT_ARMOR_COLLAR = "6575d598b15fef3dd4051678", + BUILTININSERTS_THORINTCAR_LEVEL3_SOFT_ARMOR_FRONT = "6575d561b15fef3dd4051670", + BUILTININSERTS_THORINTCAR_LEVEL3_SOFT_ARMOR_GROIN_FRONT = "6575d5a616c2762fba005820", + BUILTININSERTS_THORINTCAR_LEVEL3_SOFT_ARMOR_LEFT_ARM = "6575d5b316c2762fba005824", + BUILTININSERTS_THORINTCAR_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "6575d57a16c2762fba00581c", + BUILTININSERTS_THORINTCAR_LEVEL3_SOFT_ARMOR_RIGHT_ARM = "6575d5bd16c2762fba005828", + BUILTININSERTS_THORINTCAR_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "6575d589b15fef3dd4051674", + BUILTININSERTS_TROOPER_LEVEL3_SOFT_ARMOR_BACK = "6570e0610b57c03ec90b96ef", + BUILTININSERTS_TROOPER_LEVEL3_SOFT_ARMOR_FRONT = "6570e025615f54368b04fcb0", + BUILTININSERTS_TV110_LEVEL2_SOFT_ARMOR_BACK = "6570df9c615f54368b04fca9", + BUILTININSERTS_TV110_LEVEL2_SOFT_ARMOR_FRONT = "6570df294cc0d2ab1e05ed74", + BUILTININSERTS_TV115_LEVEL2_SOFT_ARMOR_BACK = "6570658a89fd4926380b7346", + BUILTININSERTS_TV115_LEVEL2_SOFT_ARMOR_FRONT = "6570653e89fd4926380b733e", + BUILTININSERTS_ULACH_LEVEL4_HELMET_ARMOR_EARS = "657112ce22996eaf110881fb", + BUILTININSERTS_ULACH_LEVEL4_HELMET_ARMOR_NAPE = "657112a4818110db4600aa66", + BUILTININSERTS_ULACH_LEVEL4_HELMET_ARMOR_TOP = "657112234269e9a568089eac", + BUILTININSERTS_UNTAR_LEVEL3_HELMET_ARMOR_EARS = "654a9189bcc67a392b056c79", + BUILTININSERTS_UNTAR_LEVEL3_HELMET_ARMOR_NAPE = "654a91068e1ce698150fd1e2", + BUILTININSERTS_UNTAR_LEVEL3_HELMET_ARMOR_TOP = "654a90aff4f81a421b0a7c86", + BUILTININSERTS_UNTAR_LEVEL3_SOFT_ARMOR_BACK = "657045741bd9beedc40b7299", + BUILTININSERTS_UNTAR_LEVEL3_SOFT_ARMOR_FRONT = "657044e971369562b300ce9b", + BUILTININSERTS_UNTAR_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657045b97e80617cee095bda", + BUILTININSERTS_UNTAR_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "6570460471369562b300ce9f", + BUILTININSERTS_ZHUK3_LEVEL2_SOFT_ARMOR_BACK = "6571dbda88ead79fcf091d75", + BUILTININSERTS_ZHUK3_LEVEL2_SOFT_ARMOR_COLLAR = "6571dbef88ead79fcf091d79", + BUILTININSERTS_ZHUK3_LEVEL2_SOFT_ARMOR_FRONT = "6571dbd388ead79fcf091d71", + BUILTININSERTS_ZHUK3_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "6571dbe07c02ae206002502e", + BUILTININSERTS_ZHUK3_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "6571dbeaee8ec43d520cf89e", + BUILTININSERTS_ZHUK6_LEVEL3_SOFT_ARMOR_BACK = "657642b0e6d5dd75f40688a5", + BUILTININSERTS_ZHUK6_LEVEL3_SOFT_ARMOR_COLLAR = "657643a220cc24d17102b14c", + BUILTININSERTS_ZHUK6_LEVEL3_SOFT_ARMOR_FRONT = "65764275d8537eb26a0355e9", + BUILTININSERTS_ZHUK6_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "6576434820cc24d17102b148", + BUILTININSERTS_ZHUK6_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "657643732bc38ef78e076477", + BUILTININSERTS_ZSH_1_2M_LEVEL4_HELMET_ARMOR_EARS = "657f92e7f4c82973640b2354", + BUILTININSERTS_ZSH_1_2M_LEVEL4_HELMET_ARMOR_NAPE = "657f92acada5fadd1f07a57e", + BUILTININSERTS_ZSH_1_2M_LEVEL4_HELMET_ARMOR_TOP = "657f925dada5fadd1f07a57a", + CHARGE_AI_AXMC_338_LM_BOLT_ASSEMBLY = "62811cd7308cb521f87a8f99", + CHARGE_AK_CSS_KNURLED_CHARGING_HANDLE = "6130ca3fd92c473c77020dbd", + CHARGE_AK_ZENIT_RP1_CHARGING_HANDLE = "5648ac824bdc2ded0b8b457d", + CHARGE_AR10_KAC_AMBIDEXTROUS_CHARGING_HANDLE = "5df8e085bb49d91fb446d6a8", + CHARGE_AR10_KAC_CHARGING_HANDLE = "5df8e053bb49d91fb446d6a6", + CHARGE_AR15_ADAR_215_CHARGING_HANDLE = "5c0faf68d174af02a96260b8", + CHARGE_AR15_BADGER_ORDNANCE_TACTICAL_CHARGING_HANDLE_LATCH = "56ea7165d2720b6e518b4583", + CHARGE_AR15_COLT_CHARGING_HANDLE = "55d44fd14bdc2d962f8b456e", + CHARGE_AR15_DANIEL_DEFENSE_GRIPNRIP_CHARGING_HANDLE = "651bf5617b3b552ef6712cb7", + CHARGE_AR15_GEISSELE_ACH_CHARGING_HANDLE_DDC = "5ea16d4d5aad6446a939753d", + CHARGE_AR15_HK_EXTENDED_LATCH_CHARGING_HANDLE = "5bb20dbcd4351e44f824c04e", + CHARGE_AR15_MASP_INDUSTRIES_AMBIDEXTROUS_BATTLE_CHARGING_HANDLE = "6033749e88382f4fab3fd2c5", + CHARGE_AR15_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE = "5b2240bf5acfc40dc528af69", + CHARGE_AR15_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_GREY = "5d44334ba4b9362b346d1948", + CHARGE_AR15_RAINIER_ARMS_AVALANCHE_MOD2_CHARGING_HANDLE = "5f633ff5c444ce7e3c30a006", + CHARGE_BENELLI_M3_SUPER_90_CHARGING_HANDLE = "625ec45bb14d7326ac20f572", + CHARGE_FN_P90_CHARGING_HANDLE = "5cc6ea78e4a949000e1ea3c1", + CHARGE_FN_P90_KM_THE_HANDLER_CHARGING_HANDLE = "5cc6ea85e4a949000e1ea3c3", + CHARGE_FN_SCAR_CHARGING_HANDLE = "6181688c6c780c1e710c9b04", + CHARGE_HK417_E1_EXTENDED_CHARGING_HANDLE = "61702d8a67085e45ef140b24", + CHARGE_HK_MP5K_COCKING_HANDLE = "5d2f2d5748f03572ec0c0139", + CHARGE_HK_MP5_COCKING_HANDLE = "5926c32286f774616e42de99", + CHARGE_MCX_CHARGING_HANDLE = "5fbcc640016cce60e8341acc", + CHARGE_MCX_SPEAR_CHARGING_HANDLE = "6529109524cbe3c74a05e5b7", + CHARGE_MK47_AMBIDEXTROUS_CHARGING_HANDLE = "606587bd6d0bd7580617bacc", + CHARGE_MP9_CHARGING_HANDLE = "5de922d4b11454561e39239f", + CHARGE_MPX_DOUBLE_LATCH_CHARGING_HANDLE = "58949edd86f77409483e16a9", + CHARGE_MPX_GEISSELE_SCH_CHARGING_HANDLE = "5c5db6b32e221600102611a0", + CHARGE_MPX_SINGLE_LATCH_CHARGING_HANDLE = "58949fac86f77409483e16aa", + CHARGE_STEYR_AUG_A1_CHARGING_HANDLE = "62e7c880f68e7a0676050c7c", + CHARGE_STEYR_AUG_A3_CHARGING_HANDLE = "62ebbc53e3c1e1ec7c02c44f", + COLLIMATOR_AIMPOINT_COMPM4_REFLEX_SIGHT = "5c7d55de2e221644f31bff68", + COLLIMATOR_AIMPOINT_PRO_REFLEX_SIGHT = "61659f79d92c473c770213ee", + COLLIMATOR_AXION_KOBRA_EKP1S03_REFLEX_SIGHT_DOVETAIL = "6544d4187c5457729210d277", + COLLIMATOR_AXION_KOBRA_EKP802_REFLEX_SIGHT_DOVETAIL = "5947db3f86f77447880cf76f", + COLLIMATOR_AXION_KOBRA_EKP818_REFLEX_SIGHT = "591c4efa86f7741030027726", + COLLIMATOR_BELOMO_PKAA_DOVETAIL_REFLEX_SIGHT = "6113d6c3290d254f5e6b27db", + COLLIMATOR_ELCAN_SPECTER_HCO_HOLOGRAPHIC_SIGHT = "64785e7c19d732620e045e15", + COLLIMATOR_EOTECH_553_HOLOGRAPHIC_SIGHT = "570fd6c2d2720bc6458b457f", + COLLIMATOR_EOTECH_EXPS3_HOLOGRAPHIC_SIGHT_TAN = "558022b54bdc2dac148b458d", + COLLIMATOR_EOTECH_HHS1_HYBRID_SIGHT = "5c07dd120db834001c39092d", + COLLIMATOR_EOTECH_HHS1_HYBRID_SIGHT_TAN = "5c0a2cec0db834001b7ce47d", + COLLIMATOR_EOTECH_XPS30_HOLOGRAPHIC_SIGHT = "58491f3324597764bc48fa02", + COLLIMATOR_EOTECH_XPS32_HOLOGRAPHIC_SIGHT = "584924ec24597768f12ae244", + COLLIMATOR_FN_P90_RING_SIGHT_REFLEX_SIGHT = "5cebec38d7f00c00110a652a", + COLLIMATOR_HENSOLDT_RV_RED_DOT_SIGHT = "622efbcb99f4ea1a4d6c9a15", + COLLIMATOR_HOLOSUN_HS401G5_REFLEX_SIGHT = "5b30b0dc5acfc400153b7124", + COLLIMATOR_LEAPERS_UTG_REFLEX_SIGHT = "6165ac8c290d254f5e6b2f6c", + COLLIMATOR_MILKOR_M2A1_GRENADE_LAUNCHER_REFLEX_SIGHT = "6284bd5f95250a29bc628a30", + COLLIMATOR_NPZ_PK1_OBZOR_DOVETAIL_REFLEX_SIGHT = "618a5d5852ecee1505530b2a", + COLLIMATOR_OKP7_REFLEX_SIGHT = "570fd79bd2720bc7458b4583", + COLLIMATOR_OKP7_REFLEX_SIGHT_DOVETAIL = "57486e672459770abd687134", + COLLIMATOR_SIG_SAUER_ROMEO7_1X30_REFLEX_SIGHT_PROTOTYPE = "6477772ea8a38bb2050ed4db", + COLLIMATOR_SIG_SAUER_ROMEO8T_REFLEX_SIGHT = "60a23797a37c940de7062d02", + COLLIMATOR_SR2M_KPSR2_REFLEX_SIGHT = "62ff9920fe938a24c90c10d2", + COLLIMATOR_TRIJICON_SRS02_REFLEX_SIGHT = "5d2da1e948f035477b1ce2ba", + COLLIMATOR_VALDAY_KRECHET_REFLEX_SIGHT = "609a63b6e2ff132951242d09", + COLLIMATOR_VALDAY_PK120_1P87_HOLOGRAPHIC_SIGHT = "5c0505e00db834001b735073", + COLLIMATOR_VOMZ_PILAD_P1X42_WEAVER_REFLEX_SIGHT = "584984812459776a704a82a6", + COLLIMATOR_VOMZ_PILAD_TARGETRING_REFLEX_SIGHT = "609b9e31506cf869cf3eaf41", + COLLIMATOR_VORTEX_RAZOR_AMG_UH1_HOLOGRAPHIC_SIGHT = "59f9d81586f7744c7506ee62", + COLLIMATOR_WALTHER_MRS_REFLEX_SIGHT = "570fd721d2720bc5458b4596", + COLLIMATOR_WILCOX_BOSS_XE_REFLEX_SIGHT = "655f13e0a246670fb0373245", + COMPACTCOLLIMATOR_AIMPOINT_ACRO_P1_REFLEX_SIGHT = "616442e4faa1272e43152193", + COMPACTCOLLIMATOR_AIMPOINT_MICRO_H2_REFLEX_SIGHT = "61657230d92c473c770213d7", + COMPACTCOLLIMATOR_AIMPOINT_MICRO_T1_REFLEX_SIGHT = "58d399e486f77442e0016fe7", + COMPACTCOLLIMATOR_BELOMO_PK06_REFLEX_SIGHT = "57ae0171245977343c27bfcf", + COMPACTCOLLIMATOR_BURRIS_FASTFIRE_3_REFLEX_SIGHT = "577d141e24597739c5255e01", + COMPACTCOLLIMATOR_LEUPOLD_DELTAPOINT_REFLEX_SIGHT = "58d268fc86f774111273f8c2", + COMPACTCOLLIMATOR_SIG_SAUER_ROMEO4_REFLEX_SIGHT = "5b3116595acfc40019476364", + COMPACTCOLLIMATOR_TRIJICON_RMR_REFLEX_SIGHT = "5a32aa8bc4a2826c6e06d737", + COMPASS_EYE_MK2_PROFESSIONAL_HANDHELD = "5f4f9eb969cdc30ff33f09db", + CONTAINER_AMMUNITION_CASE = "5aafbde786f774389d0cbc0f", + CONTAINER_DOCUMENTS_CASE = "590c60fc86f77412b13fddcf", + CONTAINER_DOGTAG_CASE = "5c093e3486f77430cb02e593", + CONTAINER_GINGY_KEYCHAIN = "62a09d3bcf4a99369e262447", + CONTAINER_GRENADE_CASE = "5e2af55f86f7746d4159f07c", + CONTAINER_INJECTOR_CASE = "619cbf7d23893217ec30b689", + CONTAINER_ITEM_CASE = "59fb042886f7746c5005a7b2", + CONTAINER_KEYCARD_HOLDER_CASE = "619cbf9e0a7c3a1a2731940a", + CONTAINER_KEY_TOOL = "59fafd4b86f7745ca07e1232", + CONTAINER_LUCKY_SCAV_JUNK_BOX = "5b7c710788a4506dec015957", + CONTAINER_MAGAZINE_CASE = "5c127c4486f7745625356c13", + CONTAINER_MEDICINE_CASE = "5aafbcd986f7745e590fff23", + CONTAINER_MONEY_CASE = "59fb016586f7746d0d4b423a", + CONTAINER_MR_HOLODILNICK_THERMAL_BAG = "5c093db286f7740a1b2617e3", + CONTAINER_SICC = "5d235bb686f77443f4331278", + CONTAINER_SIMPLE_WALLET = "5783c43d2459774bbe137486", + CONTAINER_THICC_ITEM_CASE = "5c0a840b86f7742ffa4f2482", + CONTAINER_THICC_WEAPON_CASE = "5b6d9ce188a4501afc1b2b25", + CONTAINER_WEAPON_CASE = "59fb023c86f7746d0d4b423c", + CONTAINER_WZ_WALLET = "60b0f6c058e0b0481a09ad11", + CULTISTAMULET_SACRED_AMULET = "64d0b40fbe2eed70e254e2d4", + DRINK_AQUAMARI_WATER_BOTTLE_WITH_FILTER = "5c0fa877d174af02a012e1cf", + DRINK_BOTTLE_OF_DAN_JACKIEL_WHISKEY = "5d403f9186f7743cac3f229b", + DRINK_BOTTLE_OF_FIERCE_HATCHLING_MOONSHINE = "5d1b376e86f774252519444e", + DRINK_BOTTLE_OF_NORVINSKIY_YADRENIY_PREMIUM_KVASS_06L = "5e8f3423fd7471236e6e3b64", + DRINK_BOTTLE_OF_PEVKO_LIGHT_BEER = "62a09f32621468534a797acb", + DRINK_BOTTLE_OF_TARKOVSKAYA_VODKA = "5d40407c86f774318526545a", + DRINK_BOTTLE_OF_TARKOVSKAYA_VODKA_BAD = "614451b71e5874611e2c7ae5", + DRINK_BOTTLE_OF_WATER_06L = "5448fee04bdc2dbc018b4567", + DRINK_CANISTER_WITH_PURIFIED_WATER = "5d1b33a686f7742523398398", + DRINK_CAN_OF_HOT_ROD_ENERGY = "5751496424597720a27126da", + DRINK_CAN_OF_ICE_GREEN_TEA = "575062b524597720a31c09a1", + DRINK_CAN_OF_MAX_ENERGY_ENERGY = "5751435d24597720a27126d1", + DRINK_CAN_OF_RATCOLA_SODA = "60b0f93284c20f0feb453da7", + DRINK_CAN_OF_TARCOLA_SODA = "57514643245977207f2c2d09", + DRINK_EMERGENCY_WATER_RATION = "60098b1705871270cd5352a1", + DRINK_PACK_OF_APPLE_JUICE = "57513f07245977207e26a311", + DRINK_PACK_OF_GRAND_JUICE = "57513f9324597720a7128161", + DRINK_PACK_OF_MILK = "575146b724597720a27126d5", + DRINK_PACK_OF_RUSSIAN_ARMY_PINEAPPLE_JUICE = "544fb62a4bdc2dfb738b4568", + DRINK_PACK_OF_VITA_JUICE = "57513fcc24597720a31c09a6", + DRUGS_ANALGIN_PAINKILLERS = "544fb37f4bdc2dee738b4567", + DRUGS_AUGMENTIN_ANTIBIOTIC_PILLS = "590c695186f7741e566b64a2", + DRUGS_GOLDEN_STAR_BALM = "5751a89d24597722aa0e8db0", + DRUGS_IBUPROFEN_PAINKILLERS = "5af0548586f7743a532b7e99", + DRUGS_MORPHINE_INJECTOR = "544fb3f34bdc2d03748b456a", + DRUGS_VASELINE_BALM = "5755383e24597772cb798966", + FACECOVER_ATOMIC_DEFENSE_CQCM_BALLISTIC_MASK_BLACK = "657089638db3adca1009f4ca", + FACECOVER_BADDIES_RED_BEARD = "62a09dd4621468534a797ac7", + FACECOVER_BALACLAVA = "572b7f1624597762ae139822", + FACECOVER_BALACLAVA_DEV = "58ac60eb86f77401897560ff", + FACECOVER_BIG_PIPES_SMOKING_PIPE = "62a61bbf8ec41a51b34758d2", + FACECOVER_COLD_FEAR_INFRARED_BALACLAVA = "5ab8f39486f7745cd93a1cca", + FACECOVER_DEADLY_SKULL_MASK = "5b432b6c5acfc4001a599bf0", + FACECOVER_DEATH_KNIGHT_MASK = "62963c18dbc8ab5f0d382d0b", + FACECOVER_DEATH_SHADOW_LIGHTWEIGHT_ARMORED_MASK = "6570aead4d84f81fd002a033", + FACECOVER_FACELESS_MASK = "6176a48d732a664031271438", + FACECOVER_FAKE_MUSTACHE = "5bd073a586f7747e6f135799", + FACECOVER_FAKE_WHITE_BEARD = "5c1a1e3f2e221602b66cc4c2", + FACECOVER_GHOST_BALACLAVA = "5ab8f4ff86f77431c60d91ba", + FACECOVER_GHOST_HALFMASK = "6571bde39837cc51b800c212", + FACECOVER_GHOUL_MASK = "6176a40f0b8c0312ac75a3d3", + FACECOVER_GLORIOUS_E_LIGHTWEIGHT_ARMORED_MASK = "62a09e08de7ac81993580532", + FACECOVER_GP5_GAS_MASK = "5b432c305acfc40019478128", + FACECOVER_GP7_GAS_MASK = "60363c0c92ec1c31037959f5", + FACECOVER_HOCKEY_PLAYER_MASK_BRAWLER = "62a5c333ec21e50cad3b5dc6", + FACECOVER_HOCKEY_PLAYER_MASK_CAPTAIN = "62a5c2c98ec41a51b34739c0", + FACECOVER_HOCKEY_PLAYER_MASK_QUIET = "62a5c41e8ec41a51b34739c3", + FACECOVER_JASON_MASK = "5bd071d786f7747e707b93a3", + FACECOVER_LOWER_HALFMASK = "572b7fa524597762b747ce82", + FACECOVER_MISHA_MAYOROV_MASK = "5bd0716d86f774171822ef4b", + FACECOVER_MOMEX_BALACLAVA = "5b432f3d5acfc4704b4a1dfb", + FACECOVER_NEOPRENE_MASK = "5b4326435acfc433000ed01d", + FACECOVER_PESTILY_PLAGUE_MASK = "5e54f79686f7744022011103", + FACECOVER_RESPIRATOR = "59e7715586f7742ee5789605", + FACECOVER_SHATTERED_LIGHTWEIGHT_ARMORED_MASK = "5b432b2f5acfc4771e1c6622", + FACECOVER_SHEMAGH_GREEN = "5ab8f85d86f7745cd93a1cf5", + FACECOVER_SHEMAGH_TAN = "5b4325355acfc40019478126", + FACECOVER_SHROUD_HALFMASK = "5e54f76986f7740366043752", + FACECOVER_SLENDER_MASK = "5bd06f5d86f77427101ad47c", + FACECOVER_SMOKE_BALACLAVA = "5fd8d28367cb5e077335170f", + FACECOVER_SPOOKY_SKULL_MASK = "635267ab3c89e2112001f826", + FACECOVER_TAGILLAS_WELDING_MASK_GORILLA = "60a7ad3a0c5cb24b0134664a", + FACECOVER_TAGILLAS_WELDING_MASK_UBEY = "60a7ad2a2198820d95707a2e", + FACECOVER_TWITCH_RIVALS_2020_HALFMASK = "5e71fad086f77422443d4604", + FACECOVER_TWITCH_RIVALS_2020_MASK = "5e71f6be86f77429f2683c44", + FACECOVER_TWITCH_RIVALS_2021_BALACLAVA = "607f201b3c672b3b3a24a800", + FACECOVER_VENGEFUL_ZRYACHIYS_BALACLAVA = "6530e8587cbfc1e309011e37", + FACECOVER_ZRYACHIYS_BALACLAVA = "63626d904aa74b8fe30ab426", + FLARE_ROP30_REACTIVE_FLARE_CARTRIDGE_WHITE = "62178be9d0050232da3485d9", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_GREEN = "6217726288ed9f0845317459", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_RED = "62178c4d4ecf221597654e3d", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_YELLOW = "624c0b3340357b5f566e8766", + FLASHHIDER_AAC_SCARSD_51T_762X51_FLASH_HIDER = "618178aa1cb55961fa0fdc80", + FLASHHIDER_AI_338_LM_TACTICAL_MUZZLE_BRAKE = "62812081d23f207deb0ab216", + FLASHHIDER_AK101_556X45_MUZZLE_BRAKECOMPENSATOR = "5ac72e615acfc43f67248aa0", + FLASHHIDER_AK102_556X45_MUZZLE_BRAKECOMPENSATOR_6P44_020 = "5ac72e725acfc400180ae701", + FLASHHIDER_AK103_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e7d5acfc40016339a02", + FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR_6P46_020 = "5ac72e895acfc43b321d4bd5", + FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR_6P44_020 = "5ac72e945acfc43f3b691116", + FLASHHIDER_AK12_545X39_MUZZLE_BRAKE = "649ec2af961514b22506b10f", + FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5ac7655e5acfc40016339a19", + FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5649aa744bdc2ded0b8b457e", + FLASHHIDER_AK74_PWS_CQB_74_545X39_MUZZLE_BRAKE = "5943eeeb86f77412d6384f6b", + FLASHHIDER_AK74_SRVV_MBR_JET_545X39_MUZZLE_BRAKE = "5cc9a96cd7f00c011c04e04a", + FLASHHIDER_AK74_THREAD_TYPE_JMAC_CUSTOMS_RRD4C_MULTICALIBER_MUZZLE_BRAKE = "5f633f791b231926f2329f13", + FLASHHIDER_AKML_SYSTEM_762X39_FLASH_HIDER = "5a0d716f1526d8000d26b1e2", + FLASHHIDER_AKM_762X39_MUZZLE_BRAKECOMPENSATOR_6P1_014 = "59d64fc686f774171b243fe2", + FLASHHIDER_AKM_THREAD_TYPE_JMAC_CUSTOMS_RRD4C_762X39_MUZZLE_BRAKE = "5f633f68f5750b524b45f112", + FLASHHIDER_AKS74U_545X39_MUZZLE_BRAKE_6P26_020 = "57dc324a24597759501edc20", + FLASHHIDER_AK_HEXAGON_REACTOR_545X39_MUZZLE_BRAKE = "615d8f5dd92c473c770212ef", + FLASHHIDER_AK_LANTAC_DRAKON_762X39_MUZZLE_BRAKE = "5c878ebb2e2216001219d48a", + FLASHHIDER_AK_SPIKES_TACTICAL_DYNACOMP_762X39_MUZZLE_BRAKECOMPENSATOR = "5a9ea27ca2750c00137fa672", + FLASHHIDER_AK_SRVV_762X39_MUZZLE_BRAKECOMPENSATOR = "5cc9ad73d7f00c000e2579d4", + FLASHHIDER_AK_VECTOR_VR05T_762X39_MUZZLE_BRAKE = "64942bfc6ee699f6890dff95", + FLASHHIDER_AK_VENOM_TACTICAL_ANTIDOTE_762X39_MUZZLE_BRAKECOMPENSATOR = "5c7951452e221644f31bfd5c", + FLASHHIDER_AK_ZENIT_DTK1_762X39545X39_MUZZLE_BRAKECOMPENSATOR = "5649ab884bdc2ded0b8b457f", + FLASHHIDER_AR10_2A_ARMANENT_X3_762X51_COMPENSATOR = "5b7d693d5acfc43bca706a3d", + FLASHHIDER_AR10_AAC_BLACKOUT_51T_762X51_FLASH_HIDER = "5a34fd2bc4a282329a73b4c5", + FLASHHIDER_AR10_CMMG_SV_BRAKE_762X51_MUZZLE_BRAKE = "6065c6e7132d4d12c81fd8e1", + FLASHHIDER_AR10_DANIEL_DEFENSE_WAVE_762X51_MUZZLE_BRAKE = "5d1f819086f7744b355c219b", + FLASHHIDER_AR10_DEAD_AIR_KEYMOUNT_762X51_MUZZLE_BRAKE = "628a66b41d5e41750e314f34", + FLASHHIDER_AR10_FORTIS_RED_BRAKE_762X51_MUZZLE_BRAKE = "5d026791d7ad1a04a067ea63", + FLASHHIDER_AR10_KAC_QDC_762X51_FLASH_SUPPRESSOR_KIT = "5dfa3cd1b33c0951220c079b", + FLASHHIDER_AR10_KAC_QDC_762X51_MUZZLE_BRAKE_KIT = "6130c43c67085e45ef1405a1", + FLASHHIDER_AR10_KEENO_ARMS_SHREWD_762X51_MUZZLE_BRAKE = "5cdd7685d7f00c000f260ed2", + FLASHHIDER_AR10_LANTAC_DRAGON_762X51_MUZZLE_BRAKECOMPENSATOR = "5c878e9d2e2216000f201903", + FLASHHIDER_AR10_NORDIC_COMPONENTS_CORVETTE_762X51_COMPENSATOR = "5d02677ad7ad1a04a15c0f95", + FLASHHIDER_AR10_ODIN_WORKS_ATLAS7_762X51_MUZZLE_BRAKE = "5bbdb8bdd4351e4502011460", + FLASHHIDER_AR10_PRECISION_ARMANENT_M11_SEVEREDUTY_762X51_MUZZLE_BRAKE = "5cdd7693d7f00c0010373aa5", + FLASHHIDER_AR10_SUREFIRE_PROCOMP_762X51_MUZZLE_BRAKE = "607ffb988900dc2d9a55b6e4", + FLASHHIDER_AR10_SUREFIRE_WARDEN_762X51_BLAST_REGULATOR = "615d8eb350224f204c1da1cf", + FLASHHIDER_AR10_TAA_ZK38_762X51_MUZZLE_BRAKE = "612e0e3c290d254f5e6b291d", + FLASHHIDER_AR10_THUNDER_BEAST_ARMS_30CB_762X51_MUZZLE_BRAKE = "5d443f8fa4b93678dd4a01aa", + FLASHHIDER_AR15_AAC_BLACKOUT_51T_556X45_FLASH_HIDER = "5c7e5f112e221600106f4ede", + FLASHHIDER_AR15_ADAR_215_556X45_FLASH_HIDER = "5c0fafb6d174af02a96260ba", + FLASHHIDER_AR15_AEROKNOX_BUTTERFLY_556X45_MUZZLE_BRAKE = "6405ff6bd4578826ec3e377a", + FLASHHIDER_AR15_ALIENTECH_556X45_MUZZLE_BRAKE = "63ac5c9658d0485fc039f0b8", + FLASHHIDER_AR15_AWC_PSR_556X45_MUZZLE_BRAKE = "612e0cfc8004cc50514c2d9e", + FLASHHIDER_AR15_BULLETEC_ST6012_556X45_MUZZLE_BRAKE = "5cf6937cd7f00c056c53fb39", + FLASHHIDER_AR15_COLT_USGI_A2_556X45_FLASH_HIDER = "544a38634bdc2d58388b4568", + FLASHHIDER_AR15_DANIEL_DEFENSE_WAVE_556X45_MUZZLE_BRAKE = "5cff9e5ed7ad1a09407397d4", + FLASHHIDER_AR15_FERFRANS_CQB_556X45_MUZZLE_BRAKE = "5f6372e2865db925d54f3869", + FLASHHIDER_AR15_GRIFFIN_ARMAMENT_GATELOK_HAMMER_556X45_FLASH_HIDER = "6386120cd6baa055ad1e201c", + FLASHHIDER_AR15_HK_BLITZ_556X45_FLASH_HIDER = "615d8e2f1cb55961fa0fd9a4", + FLASHHIDER_AR15_KAC_QDC_556X45_FLASH_SUPPRESSOR_KIT = "56ea8180d2720bf2698b456a", + FLASHHIDER_AR15_NORDIC_COMPONENTS_CORVETTE_556X45_COMPENSATOR = "5d02676dd7ad1a049e54f6dc", + FLASHHIDER_AR15_NOVESKE_KX3_556X45_FLASH_HIDER = "56ea6fafd2720b844b8b4593", + FLASHHIDER_AR15_PWS_CQB_556X45_MUZZLE_BRAKE = "5943ee5a86f77413872d25ec", + FLASHHIDER_AR15_SAI_JAILBRAKE_556X45_MUZZLE_DEVICE = "5c78f2882e22165df16b832e", + FLASHHIDER_AR15_SILENCERCO_ASR_556X45_FLASH_HIDER = "609269c3b0e443224b421cc1", + FLASHHIDER_AR15_SUREFIRE_SF3P_556X45_FLASH_HIDER = "5c7fb51d2e2216001219ce11", + FLASHHIDER_AR15_SUREFIRE_SF4P_556X45_FLASH_HIDER = "5ea172e498dacb342978818e", + FLASHHIDER_AR15_SUREFIRE_WARCOMP_556X45_FLASH_HIDER = "5c6d710d2e22165df16b81e7", + FLASHHIDER_AR15_SUREFIRE_WARDEN_556X45_BLAST_REGULATOR = "62669bccdb9ebb4daa44cd14", + FLASHHIDER_AR15_TAA_ZK23_556X45_MUZZLE_BRAKE = "612e0e55a112697a4b3a66e7", + FLASHHIDER_AR15_THUNDER_BEAST_ARMS_223CB_556X45_MUZZLE_BRAKE = "5d440625a4b9361eec4ae6c5", + FLASHHIDER_AR15_TROY_CLAYMORE_556X45_MUZZLE_BRAKE = "5cc9b815d7f00c000e2579d6", + FLASHHIDER_AR15_VENDETTA_PRECISION_VP09_INTERCEPTOR_556X45_MUZZLE_BRAKE = "5a7c147ce899ef00150bd8b8", + FLASHHIDER_AR15_WDR_NERO_556_556X45_MUZZLE_BRAKE = "64943b74e9998d641b0412ed", + FLASHHIDER_AR15_YANKEE_HILL_PHANTOM_556X45_FLASH_HIDER = "626a74340be03179a165e30c", + FLASHHIDER_ASH12_127X55_MUZZLE_BRAKECOMPENSATOR = "5caf17c9ae92150b30006be1", + FLASHHIDER_AWC_PSR_338_LM_MUZZLE_BRAKE = "612e0d81290d254f5e6b291a", + FLASHHIDER_AWC_PSR_762X51_MUZZLE_BRAKE = "612e0d3767085e45ef14057f", + FLASHHIDER_DESERT_TECH_556X45_FLASH_HIDER = "5c48a2a42e221602b66d1e07", + FLASHHIDER_DESERT_TECH_762X51_FLASH_HIDER = "5dcbe965e4ed22586443a79d", + FLASHHIDER_DVL10_762X51_MUZZLE_DEVICE = "58889c7324597754281f9439", + FLASHHIDER_DVL10_M2_762X51_MUZZLE_BRAKE = "5888996c24597754281f9419", + FLASHHIDER_FERFRANS_CRD_556X45_CONCUSSION_REDUCTION_DEVICE = "5f6339d53ada5942720e2dc3", + FLASHHIDER_FN_P90_57X28_FLASH_HIDER = "5cc82796e24e8d000f5859a8", + FLASHHIDER_FN_SCARL_556X45_FLASH_HIDER = "618407a850224f204c1da549", + FLASHHIDER_GLOCK_9X19_CARVER_CUSTOM_4_PORT_COMPENSATOR = "5a7ad0c451dfba0013379712", + FLASHHIDER_GLOCK_9X19_CARVER_CUSTOM_DECELERATOR_3_PORT_COMPENSATOR = "5a7037338dc32e000d46d257", + FLASHHIDER_GLOCK_9X19_DOUBLE_DIAMOND_FLASH_HIDER = "5a70366c8dc32e001207fb06", + FLASHHIDER_GLOCK_9X19_LONE_WOLF_ALPHAWOLF_BULLNOSE_COMPENSATOR = "5a705e128dc32e000d46d258", + FLASHHIDER_GLOCK_9X19_LONE_WOLF_LWDCOMP9_COMPENSATOR = "5a7ad1fb51dfba0013379715", + FLASHHIDER_GLOCK_9X19_STRIKE_INDUSTRIES_G4_SLIDECOMP_COMPENSATOR = "5a7b32a2e899ef00135e345a", + FLASHHIDER_HK_G36C_556X45_4PRONG_FLASH_HIDER = "622f0ee47762f55aaa68ac87", + FLASHHIDER_HK_G36_556X45_4PRONG_FLASH_HIDER = "622f128cec80d870d349b4e8", + FLASHHIDER_HK_G36_556X45_FLASH_HIDER = "622f07cfae33bc505b2c4dd5", + FLASHHIDER_HK_MP5_BT_QD_9X19_MUZZLE_BRAKE = "615d8df08004cc50514c3236", + FLASHHIDER_HK_MP5_NOVESKESTYLE_9X19_MUZZLE_BRAKECOMPENSATOR = "5c07c5ed0db834001b73571c", + FLASHHIDER_HK_MP7A1_46X30_FLASH_HIDER = "5ba26acdd4351e003562908e", + FLASHHIDER_HK_PROLONGED_762X51_FLASH_HIDER = "61713308d92c473c770214a0", + FLASHHIDER_KAC_QDC_556X45_3PRONG_FLASH_ELIMINATOR = "626667e87379c44d557b7550", + FLASHHIDER_KRISS_VECTOR_45_ACP_FLASH_HIDER = "5fb65424956329274326f316", + FLASHHIDER_KRISS_VECTOR_9X19_FLASH_HIDER = "5fbbc3324e8a554c40648348", + FLASHHIDER_LANTAC_BMD_762X51_BLAST_MITIGATION_DEVICE = "5cf78720d7f00c06595bc93e", + FLASHHIDER_M14_JP_ENTERPRISES_762X51_TACTICAL_COMPENSATOR = "5addbb825acfc408fb139400", + FLASHHIDER_M14_SMITH_ENTERPRISE_GOOD_IRON_762X51_MUZZLE_BRAKE = "5addbb945acfc4001a5fc44e", + FLASHHIDER_M14_SMITH_ENTERPRISE_VORTEX_762X51_MUZZLE_BRAKE = "5addbba15acfc400185c2854", + FLASHHIDER_M14_YANKEE_HILL_PHANTOM_762X51_FLASH_HIDER = "5addbbb25acfc40015621bd9", + FLASHHIDER_M1911_ANARCHY_OUTDOORS_45_ACP_MUZZLE_BRAKE = "5ef61964ec7f42238c31e0c1", + FLASHHIDER_M1A_NATIONAL_MATCH_762X51_FLASH_SUPPRESSOR = "5addbb6e5acfc408fb1393fd", + FLASHHIDER_M1A_SMITH_ENTERPRISE_SOCOM_16_762X51_THREADED_MUZZLE_BRAKE_GAS_BLOCK = "5ab3afb2d8ce87001660304d", + FLASHHIDER_M1A_SOCOM_16_762X51_MUZZLE_BRAKECOMPENSATOR = "5aafa1c2e5b5b00015042a56", + FLASHHIDER_MCX_SPEAR_CLUTCHLOK_QD_68X51_SHOULDERED_FLASH_HIDER = "6529113b5ae2ae97b80fdf39", + FLASHHIDER_MOSIN_RIFLE_TACFIRE_TANKER_STYLE_762X54R_MUZZLE_BRAKE = "5bbdb83fd4351e44f824c44b", + FLASHHIDER_MOSIN_RIFLE_TEXAS_PRECISION_PRODUCTS_762X54R_MUZZLE_BRAKE = "5bc5a351d4351e003477a414", + FLASHHIDER_MOSIN_RIFLE_WITT_MACHINE_762X54R_MUZZLE_BRAKE = "5bc5a35cd4351e450201232f", + FLASHHIDER_MPX_A2_9X19_FLASH_HIDER = "58949dea86f77409483e16a8", + FLASHHIDER_ORSIS_T5000M_762X51_MUZZLE_BRAKECOMPENSATOR = "5df35e7f2a78646d96665dd4", + FLASHHIDER_P226_TJS_CUSTOM_9X19_COMPENSATOR = "5c6beec32e221601da3578f2", + FLASHHIDER_PKM_762X54R_MUZZLE_BRAKE = "6492efe46cc7e29a6f03b2a0", + FLASHHIDER_PKM_762X54R_SLOTTED_FLASH_HIDER = "6492efb8cfcf7c89e701abf3", + FLASHHIDER_PK_ZENIT_DTK1P_762X54R_MUZZLE_BRAKE = "6492ef63cfcf7c89e701abf1", + FLASHHIDER_PP1901_VITYAZ_9X19_MUZZLE_BRAKECOMPENSATOR = "5998597786f77414ea6da093", + FLASHHIDER_RFB_762X51_FLASH_HIDER = "5f2aa4559b44de6b1b4e68d1", + FLASHHIDER_RPK16_545X39_MUZZLE_BRAKECOMPENSATOR = "5beec3420db834001b095429", + FLASHHIDER_SA58_3PRONG_TRIDENT_762X51_FLASH_HIDER = "5b099b7d5acfc400186331e4", + FLASHHIDER_SA58_AUSTRIAN_STYLE_762X51_MUZZLE_BRAKE = "5b7d68af5acfc400170e30c3", + FLASHHIDER_SAIGA9_9X19_MUZZLE_BRAKECOMPENSATOR = "5998598e86f7740b3f498a86", + FLASHHIDER_SIG_SAUER_762X51_3PRONG_FLASH_HIDER = "5fbcbcf593164a5b6278efb2", + FLASHHIDER_SIG_SAUER_MICRO_BRAKE_762X51_MUZZLE_BRAKE = "5fbcbd02900b1d5091531dd3", + FLASHHIDER_SIG_SAUER_TWO_PORT_BRAKE_762X51_MUZZLE_BRAKE = "5fbcbd10ab884124df0cd563", + FLASHHIDER_SILENCERCO_AC858_ASR_338_LM_MUZZLE_BRAKE = "5fc23636016cce60e8341b05", + FLASHHIDER_STEYR_AUG_A1_556X45_CLOSED_FLASH_HIDER = "630f2872911356c17d06abc5", + FLASHHIDER_STEYR_AUG_A3_556X45_CLOSED_FLASH_HIDER = "630f28f0cadb1fe05e06f004", + FLASHHIDER_STEYR_AUG_A3_556X45_MUZZLE_BRAKE = "630f291b9f66a28b37094bb8", + FLASHHIDER_STM9_9X19_MUZZLE_BRAKE = "60337f5dce399e10262255d1", + FLASHHIDER_SV98_762X54R_MUZZLE_DEVICE = "560e620e4bdc2d724b8b456b", + FLASHHIDER_SV98_762X54R_THREAD_ADAPTER = "5c4eec9b2e2216398b5aaba2", + FLASHHIDER_SV98_SRVV_MK20_762X54R_MUZZLE_BRAKECOMPENSATOR = "5c4ee3d62e2216152006f302", + FLASHHIDER_SVDS_762X54R_MUZZLE_BRAKECOMPENSATOR = "5c471bfc2e221602b21d4e17", + FLASHHIDER_SVT40_762X54R_MUZZLE_BRAKE = "64119d1f2c6d6f921a0929f8", + FLASHHIDER_TACCOM_CARBINE_BRAKE_MULTICALIBER_MUZZLE_BRAKE = "5cf6935bd7f00c06585fb791", + FLASHHIDER_TT_PMLASER_DTKTT_MUZZLE_BRAKECOMPENSATOR = "5bffd7ed0db834001d23ebf9", + FLASHHIDER_VPO136_VEPRKM_762X39_MUZZLE_BRAKECOMPENSATOR = "59e61eb386f77440d64f5daf", + FLASHHIDER_VPO209_THREAD_PROTECTOR = "59e8a00d86f7742ad93b569c", + FLASHHIDER_YANKEE_HILL_ANNIHILATOR_MULTICALIBER_FLASH_HIDER = "5b3a16655acfc40016387a2a", + FLASHLIGHT_ARMYTEK_PREDATOR_PRO_V3_XHP35_HI = "59d790f486f77403cb06aec6", + FLASHLIGHT_ULTRAFIRE_WF501B = "57d17c5e2459775a5c57d17d", + FLASHLIGHT_ZENIT_2D = "646f62fee779812413011ab7", + FOOD_ALYONKA_CHOCOLATE_BAR = "57505f6224597709a92585a9", + FOOD_ARMY_CRACKERS = "5448ff904bdc2d6f028b456e", + FOOD_CAN_OF_BEEF_STEW_LARGE = "57347da92459774491567cf5", + FOOD_CAN_OF_BEEF_STEW_SMALL = "57347d7224597744596b4e72", + FOOD_CAN_OF_CONDENSED_MILK = "5734773724597737fd047c14", + FOOD_CAN_OF_GREEN_PEAS = "57347d692459774491567cf1", + FOOD_CAN_OF_HERRING = "57347d9c245977448b40fa85", + FOOD_CAN_OF_HUMPBACK_SALMON = "57347d5f245977448b40fa81", + FOOD_CAN_OF_PACIFIC_SAURY = "5673de654bdc2d180f8b456d", + FOOD_CAN_OF_SPRATS = "5bc9c29cd4351e003562b8a3", + FOOD_CAN_OF_SQUASH_SPREAD = "57347d8724597744596b4e76", + FOOD_EMELYA_RYE_CROUTONS = "5751487e245977207e26a315", + FOOD_ISKRA_RATION_PACK = "590c5d4b86f774784e1b9c45", + FOOD_JAR_OF_DEVILDOG_MAYO = "5bc9b156d4351e00367fbce9", + FOOD_MRE_RATION_PACK = "590c5f0d86f77413997acfab", + FOOD_PACK_OF_INSTANT_NOODLES = "656df4fec921ad01000481a2", + FOOD_PACK_OF_OAT_FLAKES = "57347d90245977448f7b7f65", + FOOD_PACK_OF_SUGAR = "59e3577886f774176a362503", + FOOD_PACK_OF_TARKER_DRIED_MEAT = "65815f0e647e3d7246384e14", + FOOD_RYE_CROUTONS = "57347d3d245977448f7b7f61", + FOOD_SALTY_DOG_BEEF_SAUSAGE = "635a758bfefc88a93f021b8a", + FOOD_SLICKERS_CHOCOLATE_BAR = "544fb6cc4bdc2d34748b456e", + FOREGRIP_A3_TACTICAL_MVF001_KEYMOD_VERTICAL_FOREGRIP_BLACK = "5fc0f9b5d724d907e2077d82", + FOREGRIP_AI_AXMC_PADDED_HANDGUARD_GRIP = "6281212a09427b40ab14e770", + FOREGRIP_ASH12_VERTICAL = "5cda9bcfd7f00c0c0b53e900", + FOREGRIP_BCM_GUNFIGHTER_MOD_3_VERTICAL = "5c7fc87d2e221644f31c0298", + FOREGRIP_DANIEL_DEFENSE_ENHANCED_MLOK_VERTICAL_FOREGRIP_BLACK = "651a8bf3a8520e48047bf708", + FOREGRIP_DANIEL_DEFENSE_ENHANCED_MLOK_VERTICAL_FOREGRIP_COYOTE_BROWN = "651a8e529829226ceb67c319", + FOREGRIP_FORTIS_SHIFT_TACTICAL = "59f8a37386f7747af3328f06", + FOREGRIP_HERA_ARMS_CQR_TACTICAL = "5a7dbfc1159bd40016548fde", + FOREGRIP_HK_STURMGRIFF = "619386379fb0c665d5490dbe", + FOREGRIP_KAC_VERTICAL = "5c87ca002e221600114cb150", + FOREGRIP_MAGPUL_AFG_TACTICAL_FOREGRIP_BLACK = "588226d124597767ad33f787", + FOREGRIP_MAGPUL_AFG_TACTICAL_FOREGRIP_FDE = "588226dd24597767ad33f789", + FOREGRIP_MAGPUL_AFG_TACTICAL_FOREGRIP_FOREST_GREEN = "588226e62459776e3e094af7", + FOREGRIP_MAGPUL_AFG_TACTICAL_FOREGRIP_OLIVE_DRAB = "588226ef24597767af46e39c", + FOREGRIP_MAGPUL_MLOK_AFG_TACTICAL_FOREGRIP_BLACK = "57cffb66245977632f391a99", + FOREGRIP_MAGPUL_MLOK_AFG_TACTICAL_FOREGRIP_FDE = "57cffcd624597763133760c5", + FOREGRIP_MAGPUL_MLOK_AFG_TACTICAL_FOREGRIP_OLIVE_DRAB = "57cffcdd24597763f5110006", + FOREGRIP_MAGPUL_MLOK_AFG_TACTICAL_FOREGRIP_STEALTH_GREY = "57cffce524597763b31685d8", + FOREGRIP_MAGPUL_RVG_FOREGRIP_BLACK = "59fc48e086f77463b1118392", + FOREGRIP_MAGPUL_RVG_FOREGRIP_FDE = "5fce0cf655375d18a253eff0", + FOREGRIP_MONSTRUM_TACTICAL_VERTICAL_FORE_GRIP_KEYMOD = "615d8fd3290d254f5e6b2edc", + FOREGRIP_MP9N_VERTICAL = "5de8fbad2fbe23140d3ee9c4", + FOREGRIP_ORSIS_T5000M_PADDED_HANDGUARD_GRIP = "5df36948bb49d91fb446d5ad", + FOREGRIP_RTM_OSOVETS_P2_TACTICAL = "64806bdd26c80811d408d37a", + FOREGRIP_RTM_OSOVETS_P2_TACTICAL_FOREGRIP_KHAKI = "64807a29e5ffe165600abc97", + FOREGRIP_RTM_PILLAU_P2_TACTICAL_FOREGRIP_RED = "65169d5b30425317755f8e25", + FOREGRIP_RTM_PILLAU_TACTICAL = "5cf4fb76d7f00c065703d3ac", + FOREGRIP_RTM_PILLAU_TACTICAL_FOREGRIP_SAND = "648067db042be0705c0b3009", + FOREGRIP_SIG_SAUER_VERTICAL_FOREGRIP_KEYMOD_BLACK = "5fc0f9cbd6fa9c00c571bb90", + FOREGRIP_STARK_SE5_EXPRESS_FORWARD = "5b057b4f5acfc4771e1bd3e9", + FOREGRIP_STARK_SE5_EXPRESS_FORWARD_FOREGRIP_FDE = "655df24fdf80b12750626d0a", + FOREGRIP_STEYR_AUG_VERTICAL = "634e61b0767cb15c4601a877", + FOREGRIP_STRIKE_INDUSTRIES_COBRA_TACTICAL = "5c791e872e2216001219c40a", + FOREGRIP_STRIKE_INDUSTRIES_COBRA_TACTICAL_FOREGRIP_FDE = "655dccfdbdcc6b5df71382b6", + FOREGRIP_TACTICAL_DYNAMICS_SKELETONIZED = "5f6340d3ca442212f4047eb2", + FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_BLACK = "558032614bdc2de7118b4585", + FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_FDE = "58c157be86f77403c74b2bb6", + FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_STEALTH_GREY = "58c157c886f774032749fb06", + FOREGRIP_VIKING_TACTICS_UVG_TACTICAL = "591af28e86f77414a27a9e1d", + FOREGRIP_ZENIT_RK0_TACTICAL = "5c1bc4812e22164bef5cfde7", + FOREGRIP_ZENIT_RK1_TACTICAL = "5c1bc5612e221602b5429350", + FOREGRIP_ZENIT_RK1_TACTICAL_FOREGRIP_ON_B25U_MOUNT = "5c1cd46f2e22164bef5cfedb", + FOREGRIP_ZENIT_RK2_TACTICAL = "5c1bc5af2e221602b412949b", + FOREGRIP_ZENIT_RK4_TACTICAL = "5c1bc5fb2e221602b1779b32", + FOREGRIP_ZENIT_RK5_TACTICAL = "5c1bc7432e221602b412949d", + FOREGRIP_ZENIT_RK6_TACTICAL = "5c1bc7752e221602b1779b34", + GASBLOCK_AK12_GAS_TUBE = "649ec107961514b22506b10c", + GASBLOCK_AK545_SAG_MK_21_GAS_TUBE = "628b8d83717774443b15e248", + GASBLOCK_AK74_GAS_TUBE_6P20_SB12 = "59c6633186f7740cf0493bb9", + GASBLOCK_AKM_GAS_TUBE_6P1_SB12 = "59d64ec286f774171d1e0a42", + GASBLOCK_AKS74U_GAS_TUBE_6P26_SB12 = "59d36a0086f7747e673f3946", + GASBLOCK_AK_KIBA_ARMS_VDM_CS_GAS_TUBE = "5a01ad4786f77450561fda02", + GASBLOCK_AK_TROY_FULL_LENGTH_RAIL_HANDGUARD_GAS_TUBE_COMBO = "5b237e425acfc4771e1be0b6", + GASBLOCK_AK_ULTIMAK_M1B_GAS_TUBE_HANDGUARD = "59ccfdba86f7747f2109a587", + GASBLOCK_AK_VEZHLIVYY_STRELOK_VS24_VS33C_HANDGUARD_GAS_TUBE_COMBO = "5cf656f2d7f00c06585fb6eb", + GASBLOCK_AK_VEZHLIVYY_STRELOK_VS24_VS33C_HANDGUARD_GAS_TUBE_COMBO_WHITE = "5d4aab30a4b9365435358c55", + GASBLOCK_AR10_CMMG_LOW_PROFILE_GAS_BLOCK = "6065dc8a132d4d12c81fd8e3", + GASBLOCK_AR10_JP_ENTERPRISES_GAS_SYSTEM6 = "5a34fbadc4a28200741e230a", + GASBLOCK_AR10_KAC_LOW_PROFILE_GAS_BLOCK = "5dfa3d45dfc58d14537c20b0", + GASBLOCK_AR15_BALLISTIC_ADVANTAGE_LOPRO_GAS_BLOCK = "63d3ce281fe77d0f2801859e", + GASBLOCK_AR15_DANIEL_DEFENSE_MK12_LOW_PROFILE_GAS_BLOCK = "56eabcd4d2720b66698b4574", + GASBLOCK_AR15_JP_ENTERPRISES_GAS_SYSTEM5B = "5d00ec68d7ad1a04a067e5be", + GASBLOCK_AR15_WINDHAM_WEAPONRY_RAIL_GAS_BLOCK = "56ea8d2fd2720b7c698b4570", + GASBLOCK_HK417_LOW_PROFILE_GAS_BLOCK = "61702f1b67085e45ef140b26", + GASBLOCK_HK_416A5_LOW_PROFILE_GAS_BLOCK = "5bb20dcad4351e3bac1212da", + GASBLOCK_HK_G36_GAS_BLOCK = "622b327b267a1b13a44abea3", + GASBLOCK_M4A1_FRONT_SIGHT_WITH_GAS_BLOCK = "5ae30e795acfc408fb139a0b", + GASBLOCK_MCX_GAS_BLOCK = "5fbc210bf24b94483f726481", + GASBLOCK_MCX_SPEAR_ADJUSTABLE_GAS_PISTON = "652910bc24cbe3c74a05e5b9", + GASBLOCK_MK18_GAS_BLOCK = "5fc2360f900b1d5091531e19", + GASBLOCK_MOLOT_ARMS_AKMTYPE_GAS_TUBE = "59e649f986f77411d949b246", + GASBLOCK_OPSKS_GAS_TUBE = "634f036a517ccc8a960fc746", + GASBLOCK_PP1901_VITYAZ_GAS_TUBE = "59ccd11386f77428f24a488f", + GASBLOCK_RD704_SLR_ION_LITE_RAILED_GAS_TUBE_HANDGUARD_GAS_TUBE_COMBO = "628a83c29179c324ed269508", + GASBLOCK_SKS_GAS_TUBE = "634f02d7517ccc8a960fc744", + GASBLOCK_SVDS_GAS_TUBE = "5c471c842e221615214259b5", + GASBLOCK_VPO101_VEPRHUNTER_GAS_TUBE = "5c5039be2e221602b177c9ff", + GRENADELAUNCHER_FN40GL_01 = "5e81ebcd8e146c7080625e15", + GRENADELAUNCHER_FN40GL_02 = "639c3fbbd0446708ee622ee9", + GRENADELAUNCHER_FN40GL_03 = "639af924d0446708ee62294e", + GRENADE_F1_HAND = "5710c24ad2720bc3458b45a3", + GRENADE_M18_SMOKE_GRENADE_GREEN = "617aa4dd8166f034d57de9c5", + GRENADE_M67_HAND = "58d3db5386f77426186285a0", + GRENADE_MODEL_7290_FLASH_BANG = "619256e5f8af2c1a4e1f5d92", + GRENADE_RDG2B_SMOKE = "5a2a57cfc4a2826c6e06d44a", + GRENADE_RGD5_HAND = "5448be9a4bdc2dfd2f8b456a", + GRENADE_RGN_HAND = "617fd91e5539a84ec44ce155", + GRENADE_RGO_HAND = "618a431df1eb8e24b8741deb", + GRENADE_VOG17_KHATTABKA_IMPROVISED_HAND = "5e32f56fcb6d5863cc5e5ee4", + GRENADE_VOG25_KHATTABKA_IMPROVISED_HAND = "5e340dcdcb6d5863cc5e5efb", + GRENADE_ZARYA_STUN = "5a0c27731526d80618476ac4", + HANDGUARD_9A91 = "644675573d52156624001fc9", + HANDGUARD_AI_AXMC_AX_KEYSLOT_16_INCH = "6281209662cba23f6c4d7a19", + HANDGUARD_AK12 = "649ec127c93611967b034957", + HANDGUARD_AK545_SAG_MK3 = "628b916469015a4e1711ed8d", + HANDGUARD_AK74_PLUM_POLYMER_HANDGUARD_6P20_SB9 = "5cbda9f4ae9215000e5b9bfc", + HANDGUARD_AK74_POLYMER_HANDGUARD_6P20_SB9 = "5648b1504bdc2d9d488b4584", + HANDGUARD_AK74_WOODEN_HANDGUARD_6P20_SB6 = "5648b0744bdc2d363b8b4578", + HANDGUARD_AKM_WOODEN_HANDGUARD_6P1_SB61 = "59d64f2f86f77417193ef8b3", + HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF = "5d15ce51d7ad1a1eff619092", + HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF_MLOK = "647db1eca8d3399c380d195c", + HANDGUARD_AKS74U_CAA_XRSU47SU_TACTICAL = "5a957c3fa2750c00137fa5f7", + HANDGUARD_AKS74U_WOODEN_HANDGUARD_6P26_SB6 = "57dc32dc245977596d4ef3d3", + HANDGUARD_AKS74U_ZENIT_B11 = "57ffa9f4245977728561e844", + HANDGUARD_AK_100SERIES_POLYMER = "5cbda392ae92155f3c17c39f", + HANDGUARD_AK_545_DESIGN_AGGRESSOR = "5cf4e3f3d7f00c06595bc7f0", + HANDGUARD_AK_AKDEMIA_DOMINATOR = "647dba3142c479dde701b654", + HANDGUARD_AK_ALFA_ARMS_ASPID = "647dd2b8a12ebf96c3031655", + HANDGUARD_AK_CAA_RS47 = "5648ae314bdc2d3d1c8b457f", + HANDGUARD_AK_CNC_GUNS_OV_GP = "6389f1dfc879ce63f72fc43e", + HANDGUARD_AK_HEXAGON_TUBULAR = "5b800e9286f7747a8b04f3ff", + HANDGUARD_AK_HEXAGON_TUBULAR_HANDGUARD_ANODIZED_RED = "5b80242286f77429445e0b47", + HANDGUARD_AK_KREBS_CUSTOM_UFM_KEYMOD = "59fb375986f7741b681b81a6", + HANDGUARD_AK_MAGPUL_MOE_AKM_HANDGUARD_BLACK = "57cff947245977638e6f2a19", + HANDGUARD_AK_MAGPUL_MOE_AKM_HANDGUARD_FDE = "57cffd8224597763b03fc609", + HANDGUARD_AK_MAGPUL_MOE_AKM_HANDGUARD_OLIVE_DRAB = "57cffddc24597763133760c6", + HANDGUARD_AK_MAGPUL_MOE_AKM_HANDGUARD_PLUM = "57cffe0024597763b03fc60b", + HANDGUARD_AK_MAGPUL_MOE_AKM_HANDGUARD_STEALTH_GREY = "57cffe20245977632f391a9d", + HANDGUARD_AK_MAGPUL_ZHUKOVU_HANDGUARD_BLACK = "5c9a07572e221644f31c4b32", + HANDGUARD_AK_MAGPUL_ZHUKOVU_HANDGUARD_FDE = "5c9a1c3a2e2216000e69fb6a", + HANDGUARD_AK_MAGPUL_ZHUKOVU_HANDGUARD_PLUM = "5c9a1c422e221600106f69f0", + HANDGUARD_AK_STRIKE_INDUSTRIES_TRAX_1 = "5a9d56c8a2750c0032157146", + HANDGUARD_AK_STRIKE_INDUSTRIES_TRAX_2_HANDGUARD_EXTENSION = "5a9d6d34a2750c00141e07da", + HANDGUARD_AK_TDI_AKML = "5d1b198cd7ad1a604869ad72", + HANDGUARD_AK_TDI_AKML_HANDGUARD_ANODIZED_BRONZE = "5d4aaa73a4b9365392071175", + HANDGUARD_AK_TDI_AKML_HANDGUARD_ANODIZED_RED = "5d4aaa54a4b9365392071170", + HANDGUARD_AK_TDI_X47_TACTICAL_HANDGUARD_RAIL_SYSTEM = "5f6331e097199b7db2128dc2", + HANDGUARD_AK_VLTOR_CMRD_KEYMOD = "5c17664f2e2216398b5a7e3c", + HANDGUARD_AK_ZENIT_B10 = "5c617a5f2e2216000f1e81b3", + HANDGUARD_AK_ZENIT_B10M_HANDGUARD_WITH_B19_UPPER_MOUNT = "5648b4534bdc2d3d1c8b4580", + HANDGUARD_AK_ZENIT_B30_HANDGUARD_WITH_B31S_UPPER_HANDGUARD_RAIL = "5efaf417aeb21837e749c7f2", + HANDGUARD_AR10_CMMG_MK3_RML15_15_INCH_MLOK = "6065881d1246154cad35d637", + HANDGUARD_AR10_CMMG_MK3_RML9_9_INCH_MLOK = "6065880c132d4d12c81fd8da", + HANDGUARD_AR10_KAC_URX_4_145_INCH = "5df916dfbb49d91fb446d6b9", + HANDGUARD_AR10_LANCER_LCH7_125_INCH_MLOK = "5f6336bbda967c74a42e9932", + HANDGUARD_AR10_NOVESKE_SWS_N6_105_INCH = "5d00ede1d7ad1a0940739a76", + HANDGUARD_AR10_NOVESKE_SWS_N6_SPLIT = "5d00ef6dd7ad1a0940739b16", + HANDGUARD_AR15_AB_ARMS_MOD1 = "647de824196bf69818044c93", + HANDGUARD_AR15_AB_ARMS_MOD1_LOWER = "647def638295ebcb5b02f05b", + HANDGUARD_AR15_ADAR_215_WOODEN = "5c0e2f5cd174af02a012cfc9", + HANDGUARD_AR15_AEROKNOX_AX15_105_INCH_MLOK = "619b5db699fb192e7430664f", + HANDGUARD_AR15_AEROKNOX_AX15_158_INCH_MLOK = "640b20359ab20e15ee445fa9", + HANDGUARD_AR15_AEROKNOX_AX15_4_INCH_MLOK = "63f4ba71f31d4a33b87bd046", + HANDGUARD_AR15_ALEXANDER_ARMS_MK10_RIFLE_LENGTH = "5b2cfa535acfc432ff4db7a0", + HANDGUARD_AR15_COLT_M4_CARBINE_LENGTH = "5ae30db85acfc408fb139a05", + HANDGUARD_AR15_COLT_M4_CARBINE_LENGTH_LOWER = "637f57a68d137b27f70c4968", + HANDGUARD_AR15_DANIEL_DEFENSE_RIS_II_1225_HANDGUARD_COYOTE_BROWN = "5c9a25172e2216000f20314e", + HANDGUARD_AR15_DANIEL_DEFENSE_RIS_II_1225_LOWER_HANDGUARD_COYOTE_BROWN = "638f2003bbd47aeb9e0ff637", + HANDGUARD_AR15_DANIEL_DEFENSE_RIS_II_95_HANDGUARD_BLACK = "588b56d02459771481110ae2", + HANDGUARD_AR15_DANIEL_DEFENSE_RIS_II_95_HANDGUARD_COYOTE_BROWN = "55f84c3c4bdc2d5f408b4576", + HANDGUARD_AR15_DANIEL_DEFENSE_RIS_II_95_LOWER_HANDGUARD_BLACK = "6396aaa9a52ace83df0840ab", + HANDGUARD_AR15_DANIEL_DEFENSE_RIS_II_95_LOWER_HANDGUARD_COYOTE_BROWN = "638f1ff84822287cad04be9d", + HANDGUARD_AR15_DANIEL_DEFENSE_RIS_II_FSP_95_HANDGUARD_COYOTE_BROWN = "5c9a26332e2216001219ea70", + HANDGUARD_AR15_GEISSELE_SMR_MK16_135_INCH_MLOK_HANDGUARD_DDC = "5ea16ada09aa976f2e7a51be", + HANDGUARD_AR15_GEISSELE_SMR_MK16_95_INCH_MLOK_HANDGUARD_DDC = "5ea16acdfadf1d18c87b0784", + HANDGUARD_AR15_KAC_RIS = "55d459824bdc2d892f8b4573", + HANDGUARD_AR15_KAC_RIS_LOWER = "637f57b78d137b27f70c496a", + HANDGUARD_AR15_KAC_URX_31_1075_INCH = "5d122e7bd7ad1a07102d6d7f", + HANDGUARD_AR15_KAC_URX_31_1075_INCH_LOWER = "637f57c532b66e7e320a6676", + HANDGUARD_AR15_KAC_URX_3_8_INCH = "5d123102d7ad1a004e475fe5", + HANDGUARD_AR15_KAC_URX_3_8_INCH_LOWER = "637f57d2f5ef8c33840d36c4", + HANDGUARD_AR15_LONE_STAR_ION_LITE = "5d4405f0a4b9361e6a4e6bd9", + HANDGUARD_AR15_MAGPUL_MOE_SL_CARBINE_LENGTH_MLOK = "5c78f2792e221600106f4683", + HANDGUARD_AR15_MAGPUL_MOE_SL_MEDIUM_LENGTH_MLOK = "5c78f26f2e221601da3581d1", + HANDGUARD_AR15_PRECISION_REFLEX_GEN_III_DELTA_CARBON = "63888bbd28e5cc32cc09d2b6", + HANDGUARD_AR15_SAI_10_INCH_QD_RAIL = "5c78f2612e221600114c9f0d", + HANDGUARD_AR15_SAI_145_INCH_QD_RAIL = "5c78f2492e221600114c9f04", + HANDGUARD_AR15_SOYUZTM_12_INCH_MLOK = "6034e3e20ddce744014cb878", + HANDGUARD_AR15_SOYUZTM_15_INCH_MLOK = "6034e3d953a60014f970617b", + HANDGUARD_AR15_SOYUZTM_9_INCH_MLOK = "6034e3cb0ddce744014cb870", + HANDGUARD_AR15_STNGR_VYPR_10_INCH_MLOK = "5c6d5d8b2e221644fc630b39", + HANDGUARD_AR15_STRIKE_INDUSTRIES_VIPER_CARBINE_LENGTH_MLOK = "5d00e0cbd7ad1a6c6566a42d", + HANDGUARD_AR15_STRIKE_INDUSTRIES_VIPER_CARBINE_LENGTH_MLOK_HANDGUARD_FDE = "5d00f63bd7ad1a59283b1c1e", + HANDGUARD_AR15_STRIKE_INDUSTRIES_VIPER_CARBINE_LENGTH_MLOK_LOWER = "637f589af5ef8c33840d36d3", + HANDGUARD_AR15_STRIKE_INDUSTRIES_VIPER_CARBINE_LENGTH_MLOK_LOWER_HANDGUARD_FDE = "63969c9019971040b005049b", + HANDGUARD_AR15_UNIQUEARS_WING_SKULL_12_INCH = "6087e0336d0bd7580617bb7a", + HANDGUARD_AR15_WAR_SPORT_LVOAC_HANDGUARD_BLACK = "595cfa8b86f77427437e845b", + HANDGUARD_AR15_WAR_SPORT_LVOAS_HANDGUARD_BLACK = "595cf16b86f77427440c32e2", + HANDGUARD_ASH12_POLYMER = "5cdaa99dd7f00c002412d0b2", + HANDGUARD_BENELLI_M3_FOREND = "6259c4347d6aab70bc23a190", + HANDGUARD_DVL10_M2 = "5888976c24597754281f93f5", + HANDGUARD_FAL_ORIGINAL = "5b7bed205acfc400161d08cc", + HANDGUARD_HK417_EXTENDED_FREE_FLOAT_HANDGUARD_WITH_FLIPUP_FRONT_SIGHT = "61703001d92c473c77021497", + HANDGUARD_HK417_PATROL_HANDGUARD_WITH_FLIPUP_FRONT_SIGHT = "61712eae6c780c1e710c9a1d", + HANDGUARD_HK_416A5_MIDWEST_INDUSTRIES_135_INCH_MLOK = "5c6d11072e2216000e69d2e4", + HANDGUARD_HK_416A5_MIDWEST_INDUSTRIES_9_INCH_MLOK = "5c6d10fa2e221600106f3f23", + HANDGUARD_HK_416A5_MRS_KEYMOD_14_INCH = "5c6d10e82e221601da357b07", + HANDGUARD_HK_416A5_QUAD_RAIL = "5bb20de5d4351e0035629e59", + HANDGUARD_HK_416A5_QUAD_RAIL_EXTENDED = "5bb20dfcd4351e00334c9e24", + HANDGUARD_HK_416A5_QUAD_RAIL_HANDGUARD_WITH_FLIPUP_FRONT_SIGHT = "5bb20df1d4351e00347787d5", + HANDGUARD_HK_416A5_STRIKE_INDUSTRIES_CRUX_15_INCH_MLOK = "5c6d11152e2216000f2003e7", + HANDGUARD_HK_416A5_TROY_MLOK_13_INCH = "5c6c2c9c2e2216000f2002e4", + HANDGUARD_HK_G36_2VENT = "62386b2adf47d66e835094b2", + HANDGUARD_HK_G36_4VENT = "62386b7153757417e93a4e9f", + HANDGUARD_HK_G36_6VENT = "6231654c71b5bc3baa1078e5", + HANDGUARD_HK_MP5K_POLYMER = "5d2f259b48f0355a844acd74", + HANDGUARD_HK_MP5SD_POLYMER = "5926f34786f77469195bfe92", + HANDGUARD_HK_MP5_BT_TL99_ALUMINUM = "5a9548c9159bd400133e97b3", + HANDGUARD_HK_MP5_CAA_HX5 = "5d010d1cd7ad1a59283b1ce7", + HANDGUARD_HK_MP5_PTR_TRIRAIL = "5d19cd96d7ad1a4a992c9f52", + HANDGUARD_HK_MP5_WIDE_TROPICAL_POLYMER = "5926c36d86f77467a92a8629", + HANDGUARD_KS23M_FORESTOCK = "5e848d51e4dbc5266a4ec63b", + HANDGUARD_M700_AB_ARMS_MODX_GEN_3_KEYMOD = "5cde7afdd7f00c000d36b89d", + HANDGUARD_M870_FAB_DEFENSE_PR870_FORESTOCK = "5a788031c585673f2b5c1c79", + HANDGUARD_M870_MAGPUL_MOE = "5a788068c5856700137e4c8f", + HANDGUARD_M870_SPEEDFEED_SHORT = "5a788089c5856700142fdd9c", + HANDGUARD_MCX_GEN1_KEYMOD_12_INCH = "5fbc227aa56d053a3543f79e", + HANDGUARD_MCX_GEN1_KEYMOD_8_INCH = "5fbc226eca32ed67276c155d", + HANDGUARD_MCX_SPEAR_11_INCH_MLOK = "652910ef50dc782999054b97", + HANDGUARD_MDR_HANDGUARD_BLACK = "5dcbd6b46ec07c0c4347a564", + HANDGUARD_MDR_HANDGUARD_FDE = "5c48a14f2e2216152006edd7", + HANDGUARD_MK18_18_INCH = "5fc235db2770a0045c59c683", + HANDGUARD_MOSSBERG_590A1_MAGPUL_MOE_FORESTOCK = "5eea21647547d6330471b3c9", + HANDGUARD_MOSSBERG_590A1_SPEEDFEED_SHORT = "5e87076ce2db31558c75a11d", + HANDGUARD_MP133_BEECHWOOD_FORESTOCK = "55d45d3f4bdc2d972f8b456c", + HANDGUARD_MP133_CUSTOM_PLASTIC_FORESTOCK_WITH_RAILS = "55d45f484bdc2d972f8b456d", + HANDGUARD_MP153_POLYMER_FORESTOCK = "56deed6ed2720b4c698b4583", + HANDGUARD_MP155_ULTIMA_POLYMER_FORESTOCK = "606ee5c81246154cad35d65e", + HANDGUARD_MP155_WALNUT_FORESTOCK = "607d5aa50494a626335e12ed", + HANDGUARD_MP18_POLYMER = "61f8024263dc1250e26eb029", + HANDGUARD_MP18_WOODEN = "61f7b85367ddd414173fdb36", + HANDGUARD_MPX_GEN1 = "5894a42086f77426d2590762", + HANDGUARD_MPX_LANCER_OEM_14_INCH_MLOK = "5c59529a2e221602b177d160", + HANDGUARD_MPX_MIDWEST_INDUSTRIES_105_INCH_MLOK = "5c5db6302e2216000e5e47f0", + HANDGUARD_MPX_MIDWEST_INDUSTRIES_14_INCH_MLOK = "5c5db63a2e2216000f1b284a", + HANDGUARD_MPX_MIDWEST_INDUSTRIES_45_INCH_MLOK = "5c5db5f22e2216000e5e47e8", + HANDGUARD_MPX_MIDWEST_INDUSTRIES_65_INCH_MLOK = "5c5db5fc2e2216000f1b2842", + HANDGUARD_MTS25512_BEECHWOOD_FORESTOCK = "6123649463849f3d843da7c4", + HANDGUARD_OPSKS_GAS_TUBE_COVER = "634f03d40384a3ba4f06f874", + HANDGUARD_ORSIS_T5000M = "5df25d3bfd6b4e6e2276dc9a", + HANDGUARD_PK_ZENIT_B50 = "6491c6f6ef312a876705191b", + HANDGUARD_R11_RSASS = "5a329052c4a28200741e22d3", + HANDGUARD_RFB = "5f2aa47a200e2c0ee46efa71", + HANDGUARD_RPD_WOODEN = "6513f05a94c72326990a3866", + HANDGUARD_RPK16 = "5beec3e30db8340019619424", + HANDGUARD_SA58FAL_AIM_SPORTS_UNIVERSAL_KEYMOD = "5b7be2345acfc400196d524a", + HANDGUARD_SA58FAL_AIM_SPORTS_UNIVERSAL_MLOK = "5b7bebc85acfc43bca706666", + HANDGUARD_SA58FAL_BELGIAN_STYLE = "5b7d671b5acfc43d82528ddd", + HANDGUARD_SA58FAL_VLTOR_CASVFAL = "5b7bedd75acfc43d825283f9", + HANDGUARD_SA58FAL_VLTOR_CASVFAS = "5b7bee755acfc400196d5383", + HANDGUARD_SA58_QUAD_RAIL = "5b099a9d5acfc47a8607efe7", + HANDGUARD_SA58_QUAD_RAIL_FULL_LENGTH = "5b7be1ca5acfc400170e2d2f", + HANDGUARD_SAIGA9_HARTMAN_GYURZA = "651bfe4d1065f87f082e7209", + HANDGUARD_SKS_ATI_MONTE_CARLO_GAS_TUBE_COVER = "653ecc425a1690d9d90491e4", + HANDGUARD_SKS_FAB_DEFENSE_UAS_GAS_TUBE_COVER = "653ece125a1690d9d90491e8", + HANDGUARD_SKS_GAS_TUBE_COVER = "634f08a21f9f536910079b5a", + HANDGUARD_SKS_TAPCO_RAILED_GAS_TUBE_COVER = "653ecd065a1690d9d90491e6", + HANDGUARD_SOK12_BRAVO18_ALUMINIUM = "5f63418ef5750b524b45f116", + HANDGUARD_SOK12_CUSTOM_GUNS_TYPE340 = "6086b5731246154cad35d6c7", + HANDGUARD_SOK12_LEAPERS_UTG_PRO_MTU002_LONG_TOP_ALUMINUM = "5827272a24597748c74bdeea", + HANDGUARD_SOK12_LEAPERS_UTG_PRO_MTU002_SHORT_TOP_ALUMINUM = "58272b392459774b4c7b3ccd", + HANDGUARD_SOK12_POLYMER_HANDGUARD_SB71 = "576169e62459773c69055191", + HANDGUARD_SR2M_POLYMER = "62e15547db1a5c41971c1b5e", + HANDGUARD_SR2M_POLYMER_HANDGUARD_BLACK = "637ba19df7ca6372bf2613d7", + HANDGUARD_SV98_CNC_GUNS_OVSV98_KEYMOD = "623c3c1f37b4b31470357737", + HANDGUARD_SVDS_POLYMER = "5c471c6c2e221602b66cd9ae", + HANDGUARD_SVD_CAA_XRSDRG = "5e5699df2161e06ac158df6f", + HANDGUARD_SVD_MODERNIZATION_KIT = "5e56991336989c75ab4f03f6", + HANDGUARD_SVD_SAG_MK1_CHASSIS = "5dfcd0e547101c39625f66f9", + HANDGUARD_VPO136_VEPRKM_WOODEN = "59e6284f86f77440d569536f", + HANDGUARD_VPO209_WOODEN = "59e898ee86f77427614bd225", + HANDGUARD_VSK94 = "6448f2f6d4928d46d30be3f6", + HANDGUARD_WASR1063_CAF_WOODEN_FOREGRIP = "5d2c829448f0353a5c7d6674", + HEADPHONES_GSSH01_ACTIVE_HEADSET = "5b432b965acfc47a8774094e", + HEADPHONES_MSA_SORDIN_SUPREME_PROXL_HEADSET = "5aa2ba71e5b5b000137b758f", + HEADPHONES_OPSCORE_FAST_RAC_HEADSET = "5a16b9fffcdbcb0176308b34", + HEADPHONES_OPSMEN_EARMOR_M32_HEADSET = "6033fa48ffd42c541047f728", + HEADPHONES_PELTOR_COMTAC_2_HEADSET_OD_GREEN = "5645bcc04bdc2d363b8b4572", + HEADPHONES_PELTOR_COMTAC_4_HYBRID_HEADSET_COYOTE_BROWN = "628e4e576d783146b124c64d", + HEADPHONES_PELTOR_TACTICAL_SPORT_HEADSET = "5c165d832e2216398b5a7e36", + HEADPHONES_WALKERS_RAZOR_DIGITAL_HEADSET = "5e4d34ca86f774264f758330", + HEADPHONES_WALKERS_XCEL_500BT_DIGITAL_HEADSET = "5f60cd6cf2bcbb675b00dac6", + HEADWEAR_6B47_RATNIKBSH_HELMET_DIGITAL_FLORA_COVER = "5aa7cfc0e5b5b00015693143", + HEADWEAR_6B47_RATNIKBSH_HELMET_OLIVE_DRAB = "5a7c4850e899ef00150be885", + HEADWEAR_ALTYN_BULLETPROOF_HELMET_OLIVE_DRAB = "5aa7e276e5b5b000171d0647", + HEADWEAR_ARMASIGHT_NVG_HEAD_STRAP = "5c066ef40db834001966a595", + HEADWEAR_ARMY_CAP = "59e770f986f7742cbe3164ef", + HEADWEAR_ARMY_CAP_BLACK = "603618feffd42c541047f771", + HEADWEAR_ARMY_CAP_CADPAT = "6040de02647ad86262233012", + HEADWEAR_ARMY_CAP_COYOTE_TAN = "603619720ca681766b6a0fc4", + HEADWEAR_ARMY_CAP_DESERT = "60361b0b5a45383c122086a1", + HEADWEAR_ARMY_CAP_FLORA = "60361a7497633951dc245eb4", + HEADWEAR_ARMY_CAP_UCP = "60361b5a9a15b10d96792291", + HEADWEAR_BANDANA = "5b43271c5acfc432ff4dce65", + HEADWEAR_BASEBALL_CAP = "572b7d8524597762b472f9d1", + HEADWEAR_BASMACH_LEATHER_CAP = "65749ccf33fdc9c0cf06d3ca", + HEADWEAR_BEANIE = "572b7fa124597762b472f9d2", + HEADWEAR_BEAR_BASEBALL_CAP_BLACK = "5b40e5e25acfc4001a599bea", + HEADWEAR_BEAR_BASEBALL_CAP_OLIVE_DRAB = "5aa2b87de5b5b00016327c25", + HEADWEAR_BERET_BLACK = "5f60e6403b85f6263c14558c", + HEADWEAR_BERET_BLUE = "5f60e7788adaa7100c3adb49", + HEADWEAR_BERET_OLIVE_DRAB = "5f60e784f2bcbb675b00dac7", + HEADWEAR_BIG_PIPES_BANDANA = "628e4dd1f477aa12234918aa", + HEADWEAR_BNTI_LSHZ2DTM_HELMET_BLACK = "5d6d3716a4b9361bc8618872", + HEADWEAR_BOMBER_BEANIE = "60bf74184a63fc79b60c57f6", + HEADWEAR_BOSS_CAP = "60a7acf20c5cb24b01346648", + HEADWEAR_CRYE_PRECISION_AIRFRAME_HELMET_TAN = "5c17a7ed2e2216152142459c", + HEADWEAR_DED_MOROZ_HAT = "5a43943586f77416ad2f06e2", + HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "5b4329f05acfc47a86086aa1", + HEADWEAR_DIAMOND_AGE_BASTION_HELMET_BLACK = "5ea17ca01412a1425304d1c0", + HEADWEAR_DIAMOND_AGE_NEOSTEEL_HIGH_CUT_HELMET_BLACK = "65709d2d21b9f815e208ff95", + HEADWEAR_DOOR_KICKER_BOONIE_HAT = "5d96141523f0ea1b7f2aacab", + HEADWEAR_EMERCOM_CAP = "5aa2b89be5b5b0001569311f", + HEADWEAR_FORT_KIVERM_BULLETPROOF_HELMET = "5645bc214bdc2d363b8b4571", + HEADWEAR_GALVION_CAIMAN_HYBRID_HELMET_GREY = "5f60b34a41e30a4ab12a6947", + HEADWEAR_GUS_BASEBALL_CAP = "65749cb8e0423b9ebe0c79c9", + HEADWEAR_HIGHCOM_STRIKER_ACHHC_IIIA_HELMET_BLACK = "5b40e3f35acfc40016388218", + HEADWEAR_HIGHCOM_STRIKER_ACHHC_IIIA_HELMET_OLIVE_DRAB = "5b40e4035acfc47a87740943", + HEADWEAR_HIGHCOM_STRIKER_ULACH_IIIA_HELMET_BLACK = "5b40e1525acfc4771e1c6611", + HEADWEAR_HIGHCOM_STRIKER_ULACH_IIIA_HELMET_DESERT_TAN = "5b40e2bc5acfc40016388216", + HEADWEAR_JACKOLANTERN_TACTICAL_PUMPKIN_HELMET = "59ef13ca86f77445fd0e2483", + HEADWEAR_JACK_PYKE_HUNTING_LLCS_BOONIE_HAT = "618aef6d0a5a59657e5f55ee", + HEADWEAR_KINDA_COWBOY_HAT = "5aa2b9ede5b5b000137b758b", + HEADWEAR_KOLPAK1S_RIOT_HELMET = "59e7711e86f7746cae05fbe1", + HEADWEAR_KOTTON_BEANIE = "5bd073c986f7747f627e796c", + HEADWEAR_LEATHER_CAP = "61c18db6dfd64163ea78fbb4", + HEADWEAR_LSHZ_LIGHTWEIGHT_HELMET_OLIVE_DRAB = "5b432d215acfc4771e1c6624", + HEADWEAR_MASKA1SCH_BULLETPROOF_HELMET_KILLA_EDITION = "5c0e874186f7745dc7616606", + HEADWEAR_MASKA1SCH_BULLETPROOF_HELMET_OLIVE_DRAB = "5c091a4e0db834001d5addc8", + HEADWEAR_MILTEC_BOONIE_HAT = "5b4327aa5acfc400175496e0", + HEADWEAR_MSA_ACH_TC2001_MICH_SERIES_HELMET_OLIVE_DRAB = "5d5e7d28a4b936645d161203", + HEADWEAR_MSA_ACH_TC2002_MICH_SERIES_HELMET_OLIVE_DRAB = "5d5e9c74a4b9364855191c40", + HEADWEAR_MSA_GALLET_TC_800_HIGH_CUT_COMBAT_HELMET_BLACK = "5e4bfc1586f774264f7582d3", + HEADWEAR_NFM_HJELM_HELMET_HELLHOUND_GREY = "61bca7cda0eae612383adf57", + HEADWEAR_NPP_KLASS_TOR2_HELMET_OLIVE_DRAB = "65719f0775149d62ce0a670b", + HEADWEAR_OPSCORE_FAST_MT_SUPER_HIGH_CUT_HELMET_BLACK = "5a154d5cfcdbcb001a3b00da", + HEADWEAR_OPSCORE_FAST_MT_SUPER_HIGH_CUT_HELMET_URBAN_TAN = "5ac8d6885acfc400180ae7b0", + HEADWEAR_POLICE_CAP = "5aa2b8d7e5b5b00014028f4a", + HEADWEAR_POMPON_HAT = "5b4329075acfc400153b78ff", + HEADWEAR_PSH97_DJETA_RIOT_HELMET = "5c0d2727d174af02a012cf58", + HEADWEAR_RIVALS_2020_BEANIE = "5f994730c91ed922dd355de3", + HEADWEAR_RIVALS_2020_CAP = "5f99418230835532b445e954", + HEADWEAR_RYST_BULLETPROOF_HELMET_BLACK = "5f60c74e3b85f6263c145586", + HEADWEAR_SANTA_HAT = "5a43957686f7742a2c2f11b0", + HEADWEAR_SHPM_FIREFIGHTER_HELMET = "5c08f87c0db8340019124324", + HEADWEAR_SKI_HAT_WITH_HOLES_FOR_EYES = "5ab8f20c86f7745cdb629fb2", + HEADWEAR_SSH68_STEEL_HELMET_OLIVE_DRAB = "5c06c6a80db834001b735491", + HEADWEAR_SSSH94_SFERAS_HELMET = "5aa7d193e5b5b000171d063f", + HEADWEAR_STICH_PROFI_CHIMERA_BOONIE_HAT = "60b52e5bc7d8103275739d67", + HEADWEAR_TACKEK_FAST_MT_HELMET_REPLICA = "5ea05cf85ad9772e6624305d", + HEADWEAR_TACTICAL_FLEECE_BEANIE_TAN = "5aa2ba19e5b5b00014028f4e", + HEADWEAR_TEAM_WENDY_EXFIL_BALLISTIC_HELMET_BLACK = "5e00c1ad86f774747333222c", + HEADWEAR_TEAM_WENDY_EXFIL_BALLISTIC_HELMET_COYOTE_BROWN = "5e01ef6886f77445f643baa4", + HEADWEAR_TSH4ML_SOFT_TANK_CREW_HELMET = "5df8a58286f77412631087ed", + HEADWEAR_UNTAR_HELMET = "5aa7d03ae5b5b00016327db5", + HEADWEAR_USEC_BASEBALL_CAP_BLACK = "5b40e61f5acfc4001a599bec", + HEADWEAR_USEC_BASEBALL_CAP_COYOTE = "5aa2a7e8e5b5b00016327c16", + HEADWEAR_USHANKA_EAR_FLAP_HAT = "59e7708286f7742cbd762753", + HEADWEAR_UX_PRO_BEANIE = "5aa2ba46e5b5b000137b758d", + HEADWEAR_VENGEFUL_ZRYACHIYS_BALACLAVA_FOLDED = "6531119b9afebff7ff0a1769", + HEADWEAR_VULKAN5_LSHZ5_BULLETPROOF_HELMET_BLACK = "5ca20ee186f774799474abc2", + HEADWEAR_WILCOX_SKULL_LOCK_HEAD_MOUNT = "5a16bb52fcdbcb001a3b00dc", + HEADWEAR_ZRYACHIYS_BALACLAVA_FOLDED = "636270263f2495c26f00b007", + HEADWEAR_ZSH12M_HELMET_BLACK_COVER = "5aa7e4a4e5b5b000137b76f2", + HEADWEAR_ZSH12M_HELMET_OLIVE_DRAB = "5aa7e454e5b5b0214e506fa2", + HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_1 = "63dbd45917fff4dee40fe16e", + HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_2 = "65424185a57eea37ed6562e9", + HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_3 = "6542435ea57eea37ed6562f0", + HIDEOUTAREACONTAINER_WEAPONSTAND_STASH_1 = "6401c7b213d9b818bf0e7dd7", + HIDEOUTAREACONTAINER_WEAPONSTAND_STASH_2 = "64381b582bb1c5dedd0fc925", + HIDEOUTAREACONTAINER_WEAPONSTAND_STASH_3 = "64381b6e44b37a080d0245b9", + INFO_ADVANCED_ELECTRONIC_MATERIALS_TEXTBOOK = "6389c92d52123d5dd17f8876", + INFO_BAKEEZY_COOK_BOOK = "62a09e73af34e73a266d932a", + INFO_DECRYPTED_FLASH_DRIVE = "660bbc98c38b837877075e4a", + INFO_DIARY = "590c645c86f77412b01304d9", + INFO_DOCUMENTS_WITH_DECRYPTED_DATA = "660bc341c38b837877075e4c", + INFO_ENCRYPTED_FLASH_DRIVE = "660bbc47c38b837877075e47", + INFO_INTELLIGENCE_FOLDER = "5c12613b86f7743bbe2c3f76", + INFO_MILITARY_FLASH_DRIVE = "62a0a16d0b9d3c46de5b6e97", + INFO_SAS_DRIVE = "590c37d286f77443be3d7827", + INFO_SECURE_FLASH_DRIVE = "590c621186f774138d11ea29", + INFO_SECURE_FLASH_DRIVE_V2 = "6331ba83f2ab4f3f09502983", + INFO_SECURE_MAGNETIC_TAPE_CASSETTE = "61bf7c024770ee6f9c6b8b53", + INFO_SILICON_OPTOELECTRONIC_INTEGRATED_CIRCUITS_TEXTBOOK = "6389c8fb46b54c634724d847", + INFO_SLIM_DIARY = "590c651286f7741e566b6461", + INFO_SSD_DRIVE = "590c392f86f77444754deb29", + INFO_TECH_MANUAL = "590c639286f774151567fa95", + INFO_TERRAGROUP_BLUE_FOLDERS_MATERIALS = "6389c8c5dbfd5e4b95197e6b", + INFO_TOPOGRAPHIC_SURVEY_MAPS = "62a0a124de7ac81993580542", + INFO_VIDEO_CASSETTE_WITH_THE_CYBORG_KILLER_MOVIE = "62a09e974f842e1bd12da3f0", + INVENTORY_DEFAULT = "55d7217a4bdc2d86028b456d", + IRONSIGHT_AK105_REAR_SIGHT_6P44_SB130 = "5ac733a45acfc400192630e2", + IRONSIGHT_AK12_REAR_SIGHT = "649ec2cec93611967b03495e", + IRONSIGHT_AK12_REAR_SIGHT_BASE = "649ec2da59cbb3c813042dca", + IRONSIGHT_AK545_SAG_REAR_SIGHT = "628b9471078f94059a4b9bfb", + IRONSIGHT_AK74M_REAR_SIGHT_6P20_SB2 = "5ac72e475acfc400180ae6fe", + IRONSIGHT_AK74_REAR_SIGHT_6P20_SB2 = "5649b0544bdc2d1b2b8b458a", + IRONSIGHT_AKMB_SYSTEM_REAR_SIGHT = "5a0eb980fcdbcb001a3b00a6", + IRONSIGHT_AKMP_SYSTEM_FRONT_SIGHT_DEVICE = "5a0f096dfcdbcb0176308b15", + IRONSIGHT_AKMP_SYSTEM_REAR_SIGHT_DEVICE = "5a0ed824fcdbcb0176308b0d", + IRONSIGHT_AKM_REAR_SIGHT_6P1_SB21 = "59d650cf86f7741b846413a4", + IRONSIGHT_AK_RD_ENHANCED_V2_REAR_SIGHT = "628a7b23b0f75035732dd565", + IRONSIGHT_AK_TAKTIKA_TULA_TT01_REAR_SIGHT_RAIL = "5649d9a14bdc2d79388b4580", + IRONSIGHT_APB_REAR_SIGHT = "5aba639ed8ce8700182ece67", + IRONSIGHT_APS_FRONT_SIGHT = "5aba62f8d8ce87001943946b", + IRONSIGHT_APS_REAR_SIGHT = "5aba637ad8ce87001773e17f", + IRONSIGHT_AR15_COLT_A2_REAR_SIGHT = "55d5f46a4bdc2d1b198b4567", + IRONSIGHT_AR15_LEAPERS_UTG_LOW_PROFILE_A2_FRONT_SIGHT = "55d4af3a4bdc2d972f8b456f", + IRONSIGHT_AR15_REAR_SIGHT_CARRY_HANDLE = "5ae30bad5acfc400185c2dc4", + IRONSIGHT_ASH12_FOLDING_FRONT_SIGHT = "5caf16a2ae92152ac412efbc", + IRONSIGHT_ASH12_REAR_SIGHT_CARRY_HANDLE = "5caf1691ae92152ac412efb9", + IRONSIGHT_AS_VAL_REAR_SIGHT = "57c44e7b2459772d28133248", + IRONSIGHT_BENELLI_M3_GHOST_RING_REAR_SIGHT = "625ebcef6f53af4aa66b44dc", + IRONSIGHT_CHIAPPA_RHINO_FRONT_SIGHT = "619f4d304c58466fe1228437", + IRONSIGHT_CHIAPPA_RHINO_REAR_SIGHT = "619f4cee4c58466fe1228435", + IRONSIGHT_CHIAPPA_RHINO_RED_FIBER_OPTIC_FRONT_SIGHT = "619f52454c58466fe122843b", + IRONSIGHT_CHIAPPA_RHINO_RED_FIBER_OPTIC_REAR_SIGHT = "619f4f8c4c58466fe1228439", + IRONSIGHT_FN_FIVESEVEN_MK2_FRONT_SIGHT = "5d3eb536a4b9363b1f22f8e2", + IRONSIGHT_FN_FIVESEVEN_MK2_REAR_SIGHT = "5d3eb4aba4b93650d64e497d", + IRONSIGHT_FN_SCAR_FLIPUP_FRONT_SIGHT = "61816fcad92c473c770215cc", + IRONSIGHT_FN_SCAR_FLIPUP_REAR_SIGHT = "61817865d3a39d50044c13a4", + IRONSIGHT_GLOCK_19X_FRONT_SIGHT = "630765777d50ff5e8a1ea718", + IRONSIGHT_GLOCK_19X_REAR_SIGHT = "630765cb962d0247b029dc45", + IRONSIGHT_GLOCK_DEAD_RINGER_SNAKE_EYE_FRONT_SIGHT = "5a7d90eb159bd400165484f1", + IRONSIGHT_GLOCK_DEAD_RINGER_SNAKE_EYE_REAR_SIGHT = "5a7d9122159bd4001438dbf4", + IRONSIGHT_GLOCK_FRONT_SIGHT = "5a6f58f68dc32e000a311390", + IRONSIGHT_GLOCK_REAR_SIGHT = "5a6f5d528dc32e00094b97d9", + IRONSIGHT_GLOCK_TRUGLO_TFX_FRONT_SIGHT = "5a7d9104159bd400134c8c21", + IRONSIGHT_GLOCK_TRUGLO_TFX_REAR_SIGHT = "5a7d912f159bd400165484f3", + IRONSIGHT_GLOCK_ZEV_TECH_FRONT_SIGHT = "5a71e0048dc32e000c52ecc8", + IRONSIGHT_GLOCK_ZEV_TECH_REAR_SIGHT = "5a71e0fb8dc32e00094b97f2", + IRONSIGHT_HK_416A5_FLIPUP_REAR_SIGHT = "5bb20e49d4351e3bac1212de", + IRONSIGHT_HK_G36_FRONT_SIGHT = "623166e08c43374ca1567195", + IRONSIGHT_HK_G36_REAR_SIGHT = "6231670f0b8aa5472d060095", + IRONSIGHT_HK_MP5_DRUM_REAR_SIGHT = "5926d2be86f774134d668e4e", + IRONSIGHT_HK_MP7_FLIPUP_FRONT_SIGHT = "5ba26b01d4351e0085325a51", + IRONSIGHT_HK_MP7_FLIPUP_REAR_SIGHT = "5ba26b17d4351e00367f9bdd", + IRONSIGHT_HK_USP_FRONT_SIGHT = "6194f35c18a3974e5e7421e6", + IRONSIGHT_HK_USP_REAR_SIGHT = "6194f2912d2c397d6600348d", + IRONSIGHT_HK_USP_RED_DOT_SIGHT_MOUNT = "61963a852d2c397d660036ad", + IRONSIGHT_HK_USP_TACTICAL_FRONT_SIGHT = "6194f3286db0f2477964e67d", + IRONSIGHT_HK_USP_TACTICAL_REAR_SIGHT = "6194f2df645b5d229654ad77", + IRONSIGHT_KAC_FOLDING_FRONT_SIGHT = "5c17804b2e2216152006c02f", + IRONSIGHT_KAC_FOLDING_MICRO_FRONT_SIGHT = "5dfa3d950dee1b22f862eae0", + IRONSIGHT_KAC_FOLDING_MICRO_REAR_SIGHT = "5dfa3d7ac41b2312ea33362a", + IRONSIGHT_KAC_FOLDING_REAR_SIGHT = "5c1780312e221602b66cc189", + IRONSIGHT_KRISS_DEFIANCE_LOW_PROFILE_FLIPUP_FRONT_SIGHT = "5fb6567747ce63734e3fa1dc", + IRONSIGHT_KRISS_DEFIANCE_LOW_PROFILE_FLIPUP_REAR_SIGHT = "5fb6564947ce63734e3fa1da", + IRONSIGHT_M14_SA_ENLARGED_MILITARY_APERTURE_REAR_SIGHT = "5abcbb20d8ce87001773e258", + IRONSIGHT_M1911A1_FRONT_SIGHT = "5e81ee213397a21db957f6a6", + IRONSIGHT_M1911A1_REAR_SIGHT = "5e81ee4dcb2b95385c177582", + IRONSIGHT_M1A_SA_NATIONAL_MATCH_062_BLADE_FRONT_SIGHT = "5addba3e5acfc4001669f0ab", + IRONSIGHT_M1A_SA_XS_POST_125_BLADE_FRONT_SIGHT = "5aafa49ae5b5b00015042a58", + IRONSIGHT_M45A1_NOVAK_LOMOUNT_FRONT_SIGHT = "5f3e78a7fbf956000b716b8e", + IRONSIGHT_M45A1_NOVAK_LOMOUNT_REAR_SIGHT = "5f3e7897ddc4f03b010e204a", + IRONSIGHT_M9A3_FRONT_SIGHT = "5cadd919ae921500126a77f3", + IRONSIGHT_M9A3_REAR_SIGHT = "5cadd940ae9215051e1c2316", + IRONSIGHT_M9A3_SIGHT_MOUNT_REAR_SIGHT_RAIL = "5cadd954ae921500103bb3c2", + IRONSIGHT_MAGPUL_MBUS_GEN2_FLIPUP_FRONT_SIGHT = "5bc09a30d4351e00367fb7c8", + IRONSIGHT_MAGPUL_MBUS_GEN2_FLIPUP_FRONT_SIGHT_FDE = "5c18b90d2e2216152142466b", + IRONSIGHT_MAGPUL_MBUS_GEN2_FLIPUP_REAR_SIGHT = "5bc09a18d4351e003562b68e", + IRONSIGHT_MAGPUL_MBUS_GEN2_FLIPUP_REAR_SIGHT_FDE = "5c18b9192e2216398b5a8104", + IRONSIGHT_MCX_FLIPUP_FRONT_SIGHT = "5fc0fa362770a0045c59c677", + IRONSIGHT_MCX_FLIPUP_REAR_SIGHT = "5fc0fa957283c4046c58147e", + IRONSIGHT_MOSIN_RIFLE_CARBINE_REAR_SIGHT = "5bfd4c980db834001b73449d", + IRONSIGHT_MOSIN_RIFLE_FRONT_SIGHT = "5ae099875acfc4001714e593", + IRONSIGHT_MOSIN_RIFLE_REAR_SIGHT = "5ae099925acfc4001a5fc7b3", + IRONSIGHT_MOSSBERG_590_GHOST_RING_FRONT_SIGHT = "5e8708d4ae379e67d22e0102", + IRONSIGHT_MOSSBERG_590_GHOST_RING_REAR_SIGHT = "5e87114fe2db31558c75a120", + IRONSIGHT_MP9_REAR_SIGHT = "5de8fb539f98ac2bc659513a", + IRONSIGHT_MPX_FLIPUP_FRONT_SIGHT = "5894a73486f77426d259076c", + IRONSIGHT_MPX_FLIPUP_REAR_SIGHT = "5894a81786f77427140b8347", + IRONSIGHT_P226_FRONT_SIGHT = "56d5a661d2720bd8418b456b", + IRONSIGHT_P226_MEPROLIGHT_TRUDOT_NIGHT_FRONT_SIGHT = "5c07b36c0db834002a1259e9", + IRONSIGHT_P226_MEPROLIGHT_TRUDOT_NIGHT_REAR_SIGHT = "5c07b3850db834002330045b", + IRONSIGHT_P226_REAR_SIGHT = "56d5a77ed2720b90418b4568", + IRONSIGHT_P226_SIGHT_MOUNT_220239_REAR_SIGHT_BEARING = "56ea7293d2720b8d4b8b45ba", + IRONSIGHT_PK_REAR_SIGHT = "6492fb8253acae0af00a29b6", + IRONSIGHT_PL15_EXTENDED_FRONT_SIGHT = "60228a850ddce744014caf69", + IRONSIGHT_PL15_EXTENDED_REAR_SIGHT = "602293f023506e50807090cb", + IRONSIGHT_PL15_FRONT_SIGHT = "60228a76d62c9b14ed777a66", + IRONSIGHT_PL15_REAR_SIGHT = "60229948cacb6b0506369e27", + IRONSIGHT_PM_REAR_SIGHT = "63c6adcfb4ba094317063742", + IRONSIGHT_PP1901_VITYAZ_REAR_SIGHT = "599860e986f7743bb57573a6", + IRONSIGHT_RPD_REAR_SIGHT = "6513f153e63f29908d0ffaba", + IRONSIGHT_RPK16_REAR_SIGHT = "5bf3f59f0db834001a6fa060", + IRONSIGHT_RPK16_REAR_SIGHT_BASE = "5beec9450db83400970084fd", + IRONSIGHT_SA58_HOLLAND_TYPE_REAR_SIGHT = "5b0bc22d5acfc47a8607f085", + IRONSIGHT_SKS_REAR_SIGHT = "574db213245977459a2f3f5d", + IRONSIGHT_SOK12_CSS_REAR_SIGHT_RAIL_MOUNT = "58272b842459774abc128d50", + IRONSIGHT_SOK12_REAR_SIGHT = "57a9b9ce2459770ee926038d", + IRONSIGHT_SV98_REAR_SIGHT = "56083e1b4bdc2dc8488b4572", + IRONSIGHT_SVDS_FRONT_SIGHT = "5c471ba12e221602b3137d76", + IRONSIGHT_SVDS_REAR_SIGHT = "5c471b7e2e2216152006e46c", + IRONSIGHT_SVT40_FRONT_SIGHT = "64119d672c6d6f921a0929fb", + IRONSIGHT_SVT40_REAR_SIGHT = "64119d90dcf48d656f0aa275", + IRONSIGHT_TRIJICON_ACOG_BACKUP_REAR_SIGHT = "5c05295e0db834001a66acbb", + IRONSIGHT_VPO101_VEPRHUNTER_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", + IRONSIGHT_VPO209_REAR_SIGHT = "59e8977386f77415a553c453", + IRONSIGHT_VSS_REAR_SIGHT = "57838e1b2459774a256959b1", + KEYCARD_OBJECT_11SR = "5e42c81886f7742a01529f57", + KEYCARD_OBJECT_21WS = "5e42c83786f7742a021fdf3c", + KEYCARD_TERRAGROUP_LABS_ACCESS = "5c94bbff86f7747ee735c08f", + KEYCARD_TERRAGROUP_LABS_KEYCARD_BLACK = "5c1d0f4986f7744bb01837fa", + KEYCARD_TERRAGROUP_LABS_KEYCARD_BLUE = "5c1d0c5f86f7744bb2683cf0", + KEYCARD_TERRAGROUP_LABS_KEYCARD_GREEN = "5c1d0dc586f7744baf2e7b79", + KEYCARD_TERRAGROUP_LABS_KEYCARD_RED = "5c1d0efb86f7744baf2e7b7b", + KEYCARD_TERRAGROUP_LABS_KEYCARD_VIOLET = "5c1e495a86f7743109743dfb", + KEYCARD_TERRAGROUP_LABS_KEYCARD_YELLOW = "5c1d0d6d86f7744bb2683e1f", + KEYCARD_WITH_A_BLUE_MARKING = "5efde6b4f5448336730dbd61", + KEY_ABANDONED_FACTORY_MARKED = "63a3a93f8a56922e82001f5d", + KEY_ARCHIVE_ROOM = "63a39e49cd6db0635c1975fc", + KEY_ASPECT_COMPANY_OFFICE = "64ce572331dd890873175115", + KEY_BACKUP_HIDEOUT = "6398fd8ad3de3849057f5128", + KEY_BELUGA_RESTAURANT_DIRECTOR = "64ccc1fe088064307e14a6f7", + KEY_CARGO_CONTAINER_MESH_DOOR = "63a39fdf1e21260da44a0256", + KEY_CAR_DEALERSHIP_CLOSED_SECTION = "63a397d3af870e651d58e65b", + KEY_CAR_DEALERSHIP_DIRECTORS_OFFICE_ROOM = "63a399193901f439517cafb6", + KEY_CHEKANNAYA_15_APARTMENT = "63a39fc0af870e651d58e6ae", + KEY_CONCORDIA_APARTMENT_34_ROOM = "64ccc1d4a0f13c24561edf27", + KEY_CONCORDIA_APARTMENT_63_ROOM = "64ccc1f4ff54fb38131acf27", + KEY_CONCORDIA_APARTMENT_64 = "63a71e922b25f7513905ca20", + KEY_CONCORDIA_APARTMENT_64_OFFICE_ROOM = "63a71e86b7f4570d3a293169", + KEY_CONCORDIA_APARTMENT_8_HOME_CINEMA = "64ccc1ec1779ad6ba200a137", + KEY_CONCORDIA_APARTMENT_8_ROOM = "63a71e781031ac76fe773c7d", + KEY_CONCORDIA_SECURITY_ROOM = "63a39c7964283b5e9c56b280", + KEY_CONFERENCE_ROOM = "62987cb98081af308d7558c8", + KEY_CONSTRUCTION_SITE_BUNKHOUSE = "63a39cb1c9b3aa4b61683ee2", + KEY_CONVENIENCE_STORE_STORAGE_ROOM = "61a64428a8c6aa1b795f0ba1", + KEY_COTTAGE_BACK_DOOR = "5a0eb6ac86f7743124037a28", + KEY_COTTAGE_SAFE = "5a0f068686f7745b0d4ea242", + KEY_DORM_GUARD_DESK = "59136a4486f774447a1ed172", + KEY_DORM_OVERSEER = "664d4b0103ef2c61246afb56", + KEY_DORM_ROOM_103 = "5938994586f774523a425196", + KEY_DORM_ROOM_104 = "591383f186f7744a4c5edcf3", + KEY_DORM_ROOM_105 = "591382d986f774465a6413a7", + KEY_DORM_ROOM_108 = "5914578086f774123569ffa4", + KEY_DORM_ROOM_110 = "59136e1e86f774432f15d133", + KEY_DORM_ROOM_114 = "59387a4986f77401cc236e62", + KEY_DORM_ROOM_118 = "5672c92d4bdc2d180f8b4567", + KEY_DORM_ROOM_203 = "5938504186f7740991483f30", + KEY_DORM_ROOM_204 = "59148c8a86f774197930e983", + KEY_DORM_ROOM_206 = "5938603e86f77435642354f4", + KEY_DORM_ROOM_214 = "5780cf942459777df90dcb72", + KEY_DORM_ROOM_218 = "5780cf9e2459777df90dcb73", + KEY_DORM_ROOM_220 = "5780cfa52459777dfb276eb1", + KEY_DORM_ROOM_303 = "593aa4be86f77457f56379f8", + KEY_DORM_ROOM_306 = "5780cda02459777b272ede61", + KEY_DORM_ROOM_308 = "5780cf722459777a5108b9a1", + KEY_DORM_ROOM_314_MARKED = "5780cf7f2459777de4559322", + KEY_DORM_ROOM_315 = "5780cf692459777de4559321", + KEY_EMERCOM_MEDICAL_UNIT = "5ad5db3786f7743568421cce", + KEY_FACTORY_EMERGENCY_EXIT = "5448ba0b4bdc2d02308b456c", + KEY_FINANCIAL_INSTITUTION_OFFICE = "63a39667c9b3aa4b61683e98", + KEY_FINANCIAL_INSTITUTION_SMALL_OFFICE = "63a71ed21031ac76fe773c7f", + KEY_FOLDING_CAR = "59136f6f86f774447a1ed173", + KEY_GAS_STATION_OFFICE = "5780d0652459777df90dcb74", + KEY_GAS_STATION_SAFE = "5a0f045e86f7745b0f0d0e42", + KEY_GAS_STATION_STORAGE_ROOM = "5913877a86f774432f15d444", + KEY_GOSHAN_CASH_REGISTER = "5ad7247386f7747487619dc3", + KEY_GRUMPYS_HIDEOUT = "664d3dd590294949fe2d81b7", + KEY_HEALTH_RESORT_EAST_WING_OFFICE_ROOM_107 = "5a0ea64786f7741707720468", + KEY_HEALTH_RESORT_EAST_WING_OFFICE_ROOM_108 = "5a0ea69f86f7741cd5406619", + KEY_HEALTH_RESORT_EAST_WING_ROOM_205 = "5a144bdb86f7741d374bbde0", + KEY_HEALTH_RESORT_EAST_WING_ROOM_206 = "5a0ee4b586f7743698200d22", + KEY_HEALTH_RESORT_EAST_WING_ROOM_209 = "5a0ee62286f774369454a7ac", + KEY_HEALTH_RESORT_EAST_WING_ROOM_213 = "5a0ee72c86f77436955d3435", + KEY_HEALTH_RESORT_EAST_WING_ROOM_216 = "5a0ee76686f7743698200d5c", + KEY_HEALTH_RESORT_EAST_WING_ROOM_222 = "5a13f24186f77410e57c5626", + KEY_HEALTH_RESORT_EAST_WING_ROOM_226 = "5a13f35286f77413ef1436b0", + KEY_HEALTH_RESORT_EAST_WING_ROOM_306 = "5a145d4786f7744cbb6f4a12", + KEY_HEALTH_RESORT_EAST_WING_ROOM_308 = "5a145d7b86f7744cbb6f4a13", + KEY_HEALTH_RESORT_EAST_WING_ROOM_310 = "5a0eec9686f77402ac5c39f2", + KEY_HEALTH_RESORT_EAST_WING_ROOM_313 = "5a0eecf686f7740350630097", + KEY_HEALTH_RESORT_EAST_WING_ROOM_314 = "5a0eed4386f77405112912aa", + KEY_HEALTH_RESORT_EAST_WING_ROOM_316 = "5a145ebb86f77458f1796f05", + KEY_HEALTH_RESORT_EAST_WING_ROOM_322 = "5a0eedb386f77403506300be", + KEY_HEALTH_RESORT_EAST_WING_ROOM_328 = "5a0eee1486f77402aa773226", + KEY_HEALTH_RESORT_MANAGEMENT_OFFICE_SAFE = "5a0f08bc86f77478f33b84c2", + KEY_HEALTH_RESORT_MANAGEMENT_WAREHOUSE_SAFE = "5a0f0f5886f7741c4e32a472", + KEY_HEALTH_RESORT_OFFICE_KEY_WITH_A_BLUE_TAPE = "5eff09cd30a7dc22fd1ddfed", + KEY_HEALTH_RESORT_UNIVERSAL_UTILITY_ROOM = "5a0ea79b86f7741d4a35298e", + KEY_HEALTH_RESORT_WEST_WING_OFFICE_ROOM_104 = "5a0dc45586f7742f6b0b73e3", + KEY_HEALTH_RESORT_WEST_WING_OFFICE_ROOM_112 = "5a0dc95c86f77452440fc675", + KEY_HEALTH_RESORT_WEST_WING_ROOM_203 = "5a144dfd86f77445cb5a0982", + KEY_HEALTH_RESORT_WEST_WING_ROOM_205 = "5a0ec6d286f7742c0b518fb5", + KEY_HEALTH_RESORT_WEST_WING_ROOM_207 = "5a0ec70e86f7742c0b518fba", + KEY_HEALTH_RESORT_WEST_WING_ROOM_216 = "5a0ee30786f774023b6ee08f", + KEY_HEALTH_RESORT_WEST_WING_ROOM_218 = "5a13eebd86f7746fd639aa93", + KEY_HEALTH_RESORT_WEST_WING_ROOM_219 = "5a13ef0686f7746e5a411744", + KEY_HEALTH_RESORT_WEST_WING_ROOM_220 = "5a0ee34586f774023b6ee092", + KEY_HEALTH_RESORT_WEST_WING_ROOM_221 = "5a0ee37f86f774023657a86f", + KEY_HEALTH_RESORT_WEST_WING_ROOM_222 = "5a1452ee86f7746f33111763", + KEY_HEALTH_RESORT_WEST_WING_ROOM_301 = "5a13ef7e86f7741290491063", + KEY_HEALTH_RESORT_WEST_WING_ROOM_303 = "5a0eeb1a86f774688b70aa5c", + KEY_HEALTH_RESORT_WEST_WING_ROOM_306 = "5a13f46386f7741dd7384b04", + KEY_HEALTH_RESORT_WEST_WING_ROOM_309 = "5a0eeb8e86f77461257ed71a", + KEY_HEALTH_RESORT_WEST_WING_ROOM_321_SAFE = "5a0eff2986f7741fd654e684", + KEY_HEALTH_RESORT_WEST_WING_ROOM_323 = "5a13ee1986f774794d4c14cd", + KEY_HEALTH_RESORT_WEST_WING_ROOM_325 = "5a0eebed86f77461230ddb3d", + KEY_HEP_STATION_STORAGE_ROOM = "5d8e15b686f774445103b190", + KEY_HILLSIDE_HOUSE = "61a6444b8c141d68246e2d2f", + KEY_IDEA_CASH_REGISTER = "5ad7242b86f7740a6a3abd43", + KEY_IRON_GATE = "63a39f6e64283b5e9c56b289", + KEY_KIBA_ARMS_INNER_GRATE_DOOR = "5addaffe86f77470b455f900", + KEY_KIBA_ARMS_OUTER_DOOR = "5ad5d7d286f77450166e0a89", + KEY_LEONS_HIDEOUT = "664d3de85f2355673b09aed5", + KEY_MACHINERY = "5937ee6486f77408994ba448", + KEY_MERIN_CAR_TRUNK = "61aa5b518f5e7a39b41416e2", + KEY_MILITARY_CHECKPOINT = "5913915886f774123603c392", + KEY_MISSAM_FORKLIFT = "62a09ec84f842e1bd12da3f2", + KEY_MVD_ACADEMY_ENTRANCE_HALL_GUARD_ROOM = "6582dc4b6ba9e979af6b79f4", + KEY_MYSTERIOUS_ROOM_MARKED = "64ccc25f95763a1ae376e447", + KEY_NECRUSPHARM_PHARMACY = "5ad5d64486f774079b080af8", + KEY_NEGOTIATION_ROOM = "6582dbe43a2e5248357dbe9a", + KEY_OLI_ADMINISTRATION_OFFICE = "5ad5ccd186f774446d5706e9", + KEY_OLI_CASH_REGISTER = "5ad7217186f7746744498875", + KEY_OLI_LOGISTICS_DEPARTMENT_OFFICE = "5ad5cfbd86f7742c825d6104", + KEY_OLI_OUTLET_UTILITY_ROOM = "5ad5d20586f77449be26d877", + KEY_OPERATING_ROOM = "62987da96188c076bc0d8c51", + KEY_PE_TEACHERS_OFFICE = "64ccc268c41e91416064ebc7", + KEY_PINEWOOD_HOTEL_ROOM_206 = "63a39f18c2d53c2c6839c1d3", + KEY_PINEWOOD_HOTEL_ROOM_215 = "63a39f08cd6db0635c197600", + KEY_POLICE_TRUCK_CABIN = "61aa5aed32a4743c3453d319", + KEY_PORTABLE_BUNKHOUSE = "5938144586f77473c2087145", + KEY_PORTABLE_CABIN = "5780d07a2459777de4559324", + KEY_POWER_SUBSTATION_UTILITY_CABIN = "5ad5d49886f77455f9731921", + KEY_PRIMORSKY_4648_SKYBRIDGE = "63a39e1d234195315d4020bd", + KEY_PRIMORSKY_48_APARTMENT = "63a71eb5b7f4570d3a29316b", + KEY_PRIMORSKY_AVE_APARTMENT = "6391fcf5744e45201147080f", + KEY_PUMPING_STATION_BACK_DOOR = "593858c486f774253a24cb52", + KEY_PUMPING_STATION_FRONT_DOOR = "57a349b2245977762b199ec7", + KEY_RADAR_STATION_COMMANDANT_ROOM = "62987c658081af308d7558c6", + KEY_RBAK = "5d80c78786f774403a401e3e", + KEY_RBAM = "5d80c88d86f77440556dbf07", + KEY_RBAO = "5d80c66d86f774405611c7d6", + KEY_RBBK_MARKED = "5d80c60f86f77440373c4ece", + KEY_RBGN = "5d8e3ecc86f774414c78d05e", + KEY_RBKORL = "5d8e0db586f7744450412a42", + KEY_RBKPRL = "5d8e0e0e86f774321140eb56", + KEY_RBKSM = "5d947d4e86f774447b415895", + KEY_RBMP11 = "5d80c93086f7744036212b41", + KEY_RBMP12 = "5d80c95986f77440351beef3", + KEY_RBMP13 = "5d80cbd886f77470855c26c2", + KEY_RBMP21 = "5d80ca9086f774403a401e40", + KEY_RBMP22 = "5d80cab086f77440535be201", + KEY_RBOB = "5d80c6c586f77440351beef1", + KEY_RBOP = "5d80c8f586f77440373c4ed0", + KEY_RBORB1 = "5d80ccac86f77470841ff452", + KEY_RBORB2 = "5d80ccdd86f77474f7575e02", + KEY_RBORB3 = "5d80cd1a86f77402aa362f42", + KEY_RBPKPM_MARKED = "5ede7a8229445733cb4c18e2", + KEY_RBPP = "5d80cb8786f774405611c7d9", + KEY_RBPSP1 = "5d80cb3886f77440556dbf09", + KEY_RBPSP2 = "5d95d6fa86f77424484aa5e9", + KEY_RBPSV1 = "5d80cb5686f77440545d1286", + KEY_RBPSV2 = "5d95d6be86f77424444eb3a7", + KEY_RBRH = "5da5cdcd86f774529238fb9b", + KEY_RBRLSA = "5ede7b0c6d23e5473e6e8c66", + KEY_RBRS = "5da46e3886f774653b7a83fe", + KEY_RBSMP = "5d947d3886f774447b415893", + KEY_RBST = "5d9f1fa686f774726974a992", + KEY_RBTB = "5d80c6fc86f774403a401e3c", + KEY_RBVO_MARKED = "5d80c62a86f7744036212b3f", + KEY_REAL_ESTATE_AGENCY_OFFICE_ROOM = "6582dc5740562727a654ebb1", + KEY_RELAXATION_ROOM = "6582dbf0b8d7830efc45016f", + KEY_ROGUE_USEC_BARRACK = "62a9cb937377a65d7b070cef", + KEY_ROGUE_USEC_STASH = "61a64492ba05ef10d62adcc1", + KEY_ROGUE_USEC_WORKSHOP = "61aa81fcb225ac1ead7957c3", + KEY_RUSTED_BLOODY = "64d4b23dc1b37504b41ac2b6", + KEY_SHARED_BEDROOM_MARKED = "62987dfc402c7f69bf010923", + KEY_SHATUNS_HIDEOUT = "664d3db6db5dea2bad286955", + KEY_SHTURMANS_STASH = "5d08d21286f774736e7c94c3", + KEY_SMW_CAR = "5a0eb38b86f774153b320eb0", + KEY_STAIR_LANDING = "63a39fd1c9b3aa4b61683efb", + KEY_STORE_MANAGERS = "63a39c69af870e651d58e6aa", + KEY_STORE_SAFE = "5a0f075686f7745bcc42ee12", + KEY_SUPPLY_DEPARTMENT_DIRECTORS_OFFICE = "63a39ce4cd6db0635c1975fa", + KEY_TARBANK_CASH_REGISTER_DEPARTMENT = "64ccc2111779ad6ba200a139", + KEY_TARCONE_DIRECTORS_OFFICE = "5780d0532459777a5108b9a2", + KEY_TERRAGROUP_LABS_ARSENAL_STORAGE_ROOM = "5c1f79a086f7746ed066fb8f", + KEY_TERRAGROUP_LABS_MANAGERS_OFFICE_ROOM = "5c1e2a1e86f77431ea0ea84c", + KEY_TERRAGROUP_LABS_WEAPON_TESTING_AREA = "5c1e2d1f86f77431e9280bee", + KEY_TERRAGROUP_MEETING_ROOM = "64ccc206793ca11c8f450a38", + KEY_TERRAGROUP_SCIENCE_OFFICE = "658199aa38c79576a2569e13", + KEY_TERRAGROUP_SECURITY_ARMORY = "64ccc24de61ea448b507d34d", + KEY_TRAILER_PARK_PORTABLE_CABIN = "5913611c86f77479e0084092", + KEY_ULTRA_MEDICAL_STORAGE = "5e42c71586f7747f245e1343", + KEY_UNDERGROUND_PARKING_UTILITY_ROOM = "658199972dc4e60f6d556a2f", + KEY_UNITY_CREDIT_BANK_CASH_REGISTER = "6581998038c79576a2569e11", + KEY_UNKNOWN = "593962ca86f774068014d9af", + KEY_USEC_COTTAGE_FIRST_SAFE = "61aa5b7db225ac1ead7957c1", + KEY_USEC_COTTAGE_ROOM = "66265d7be65f224b2e17c6aa", + KEY_USEC_COTTAGE_SECOND_SAFE = "61aa5ba8018e9821b7368da9", + KEY_USEC_STASH = "5da743f586f7744014504f72", + KEY_VAZ_CAR = "5913651986f774432f15d132", + KEY_VORONS_HIDEOUT = "664d3ddfdda2e85aca370d75", + KEY_WATER_TREATMENT_PLANT_STORAGE_ROOM = "62987e26a77ec735f90a2995", + KEY_WEAPON_SAFE = "59148f8286f7741b951ea113", + KEY_WEATHER_STATION_SAFE = "5a0f006986f7741ffd2fe484", + KEY_XRAY_ROOM = "64ccc246ff54fb38131acf29", + KEY_YOTOTA_CAR = "591ae8f986f77406f854be45", + KEY_ZB014 = "591afe0186f77431bd616a11", + KEY_ZMEISKY_3_APARTMENT_8 = "63a39dfe3901f439517cafba", + KEY_ZMEISKY_5_APARTMENT_20 = "63a39df18a56922e82001f25", + KNIFE_6KH5_BAYONET = "5bffdc370db834001d23eca8", + KNIFE_ANTIQUE_AXE = "5bc9c1e2d4351e00367fbcf0", + KNIFE_APOK_TACTICAL_WASTELAND_GLADIUS = "664a5428d5e33a713b622379", + KNIFE_BARS_A2607_95KH18 = "57e26fc7245977162a14b800", + KNIFE_BARS_A2607_DAMASCUS = "57e26ea924597715ca604a09", + KNIFE_CAMPER_AXE = "5c012ffc0db834001d23f03f", + KNIFE_CRASH_AXE = "5bffe7930db834001b734a39", + KNIFE_CULTIST = "5fc64ea372b0dd78d51159dc", + KNIFE_ER_FULCRUM_BAYONET = "54491bb74bdc2d09088b4567", + KNIFE_FREEMAN_CROWBAR = "5c07df7f0db834001b73588a", + KNIFE_KIBA_ARMS_TACTICAL_TOMAHAWK = "57cd379a24597778e7682ecf", + KNIFE_MILLER_BROS_BLADES_M2_TACTICAL_SWORD = "5bffdd7e0db834001b734a1a", + KNIFE_MPL50_ENTRENCHING_TOOL = "5bead2e00db834001c062938", + KNIFE_OLD_HAND_SCYTHE = "63495c500c297e20065a08b1", + KNIFE_PRTARAN_POLICE_BATON = "6540d2162ae6d96b540afcaf", + KNIFE_RED_REBEL_ICE_PICK = "5c0126f40db834002a125382", + KNIFE_SOG_VOODOO_HAWK_TACTICAL_TOMAHAWK = "63920105a83e15700a00f168", + KNIFE_SP8_SURVIVAL_MACHETE = "5c010e350db83400232feec7", + KNIFE_SUPERFORS_DB_2020_DEAD_BLOW_HAMMER = "6087e570b998180e9f76dc24", + KNIFE_UNITED_CUTLERY_M48_TACTICAL_KUKRI = "65ca457b4aafb5d7fc0dcb5d", + KNIFE_UVSR_TAIGA1_SURVIVAL_MACHETE = "601948682627df266209af05", + LAUNCHER_GP25_KOSTYOR_40MM_UNDERBARREL_GRENADE = "62e7e7bbe6da9612f743f1e0", + LAUNCHER_GP34_40MM_UNDERBARREL_GRENADE = "5648b62b4bdc2d9d488b4585", + LAUNCHER_M203_40MM_UNDERBARREL_GRENADE = "6357c98711fb55120211f7e1", + LOCKABLECONTAINER_PISTOL_CASE = "567143bf4bdc2d1a0f8b4567", + LOOTCONTAINER_AIRDROP_COMMON_SUPPLY_CRATE = "6223349b3136504a544d1608", + LOOTCONTAINER_AIRDROP_MEDICAL_CRATE = "622334c873090231d904a9fc", + LOOTCONTAINER_AIRDROP_SUPPLY_CRATE = "622334fa3136504a544d160c", + LOOTCONTAINER_AIRDROP_WEAPON_CRATE = "6223351bb5d97a7b2c635ca7", + LOOTCONTAINER_BANK_CASH_REGISTER = "64d116f41a9c6143a956127d", + LOOTCONTAINER_BANK_SAFE = "64d11702dd0cd96ab82c3280", + LOOTCONTAINER_BURIED_BARREL_CACHE = "5d6d2bb386f774785b07a77a", + LOOTCONTAINER_CASH_REGISTER = "578f879c24597735401e6bc6", + LOOTCONTAINER_CASH_REGISTER_TAR22 = "5ad74cf586f774391278f6f0", + LOOTCONTAINER_COMMON_FUND_STASH = "5d07b91b86f7745a077a9432", + LOOTCONTAINER_DEAD_CIVILIAN = "658420d8085fea07e674cdb6", + LOOTCONTAINER_DEAD_SCAV = "5909e4b686f7747f5b744fa4", + LOOTCONTAINER_DRAWER = "578f87b7245977356274f2cd", + LOOTCONTAINER_DUFFLE_BAG = "578f87a3245977356274f2cb", + LOOTCONTAINER_DUFFLE_BAG_ADV = "61aa1e9a32a4743c3453d2cf", + LOOTCONTAINER_GRENADE_BOX = "5909d36d86f774660f0bb900", + LOOTCONTAINER_GROUND_CACHE = "5d6d2b5486f774785c2ba8ea", + LOOTCONTAINER_JACKET = "578f8778245977358849a9b5", + LOOTCONTAINER_JACKET_114KEY = "59387ac686f77401442ddd61", + LOOTCONTAINER_JACKET_204KEY = "5914944186f774189e5e76c2", + LOOTCONTAINER_JACKET_MACHINERYKEY = "5937ef2b86f77408a47244b3", + LOOTCONTAINER_LAB_TECHNICIAN_BODY = "6582e6c6edf14c4c6023adf2", + LOOTCONTAINER_MEDBAG_SMU06 = "5909d24f86f77466f56e6855", + LOOTCONTAINER_MEDBAG_SMU06_ADV = "61aa1ead84ea0800645777fd", + LOOTCONTAINER_MEDCASE = "5909d4c186f7746ad34e805a", + LOOTCONTAINER_MEDICAL_SUPPLY_CRATE = "5d6fe50986f77449d97f7463", + LOOTCONTAINER_PC_BLOCK = "59139c2186f77411564f8e42", + LOOTCONTAINER_PLASTIC_SUITCASE = "5c052cea86f7746b2101e8d8", + LOOTCONTAINER_PMC_BODY = "6582e6d7b14c3f72eb071420", + LOOTCONTAINER_RATION_SUPPLY_CRATE = "5d6fd13186f77424ad2a8c69", + LOOTCONTAINER_SAFE = "578f8782245977354405a1e3", + LOOTCONTAINER_SCAV_BODY = "6582e6bb0c3b9823fe6d1840", + LOOTCONTAINER_TECHNICAL_SUPPLY_CRATE = "5d6fd45b86f774317075ed43", + LOOTCONTAINER_TOOLBOX = "5909d50c86f774659e6aaebe", + LOOTCONTAINER_WEAPON_BOX_4X4 = "5909d7cf86f77470ee57d75a", + LOOTCONTAINER_WEAPON_BOX_5X2 = "5909d5ef86f77467974efbd8", + LOOTCONTAINER_WEAPON_BOX_5X5 = "5909d89086f77472591234a0", + LOOTCONTAINER_WEAPON_BOX_6X3 = "5909d76c86f77471e53d2adf", + LOOTCONTAINER_WOODEN_AMMO_BOX = "5909d45286f77465a8136dc6", + LOOTCONTAINER_WOODEN_CRATE = "578f87ad245977356274f2cc", + MACHINEGUN_AGS30_30X29MM_AUTOMATIC_GRENADE_LAUNCHER = "5d52cc5ba4b9367408500062", + MACHINEGUN_DEGTYAREV_RPDN_762X39_MACHINE_GUN = "65268d8ecb944ff1e90ea385", + MACHINEGUN_DEGTYAREV_RPD_762X39_MACHINE_GUN = "6513ef33e06849f06c0957ca", + MACHINEGUN_KALASHNIKOV_PKM_762X54R_MACHINE_GUN = "64637076203536ad5600c990", + MACHINEGUN_KALASHNIKOV_PKP_762X54R_INFANTRY_MACHINE_GUN = "64ca3d3954fc657e230529cc", + MACHINEGUN_KALASHNIKOV_PKTM_762X54R_MODERNIZED_TANK_MACHINE_GUN = "657857faeff4c850222dff1b", + MACHINEGUN_NSV_UTYOS_127X108_HEAVY_MACHINE_GUN = "5cdeb229d7f00c000e7ce174", + MACHINEGUN_RPK16_545X39_LIGHT_MACHINE_GUN = "5beed0f50db834001c062b12", + MAGAZINE_127X108_100_100RND = "5cffa483d7ad1a049e54ef1c", + MAGAZINE_127X55_ASH12_10RND = "5caf1041ae92157c28402e3f", + MAGAZINE_127X55_ASH12_20RND = "5caf1109ae9215753c44119f", + MAGAZINE_127X55_RSH12_CYL_5RND = "633ec6ee025b096d320a3b15", + MAGAZINE_12G_255_CYL_5RND = "60dc519adf4c47305f6d410d", + MAGAZINE_12G_590A1X8_8RND = "5e87080c81c4ed43e83cefda", + MAGAZINE_12G_M3X11_11RND = "625ff3046d721f05d93bf2ee", + MAGAZINE_12G_M3X13_13RND = "625ff31daaaa8c1130599f64", + MAGAZINE_12G_M3X5_5RND = "625ff2ccb8c587128c1a01dd", + MAGAZINE_12G_M3X7_7RND = "6259bdcabd28e4721447a2aa", + MAGAZINE_12G_M3X9_9RND = "625ff2eb9f5537057932257d", + MAGAZINE_12G_M870X10_10RND = "5a78832ec5856700155a6ca3", + MAGAZINE_12G_M870X4_4RND = "5a7882dcc5856700177af662", + MAGAZINE_12G_M870X7_7RND = "5a78830bc5856700137e4c90", + MAGAZINE_12G_MP133X6_6RND = "55d484b44bdc2d1d4e8b456d", + MAGAZINE_12G_MP133X8_8RND = "55d485804bdc2d8c2f8b456b", + MAGAZINE_12G_MP153X4_4RND = "56deee15d2720bee328b4567", + MAGAZINE_12G_MP153X5_5RND = "5882163e24597758206fee8c", + MAGAZINE_12G_MP153X6_6RND = "5882163824597757561aa922", + MAGAZINE_12G_MP153X7_7RND = "5882163224597757561aa920", + MAGAZINE_12G_MP153X8_8RND = "56deeefcd2720bc8328b4568", + MAGAZINE_12G_MP155X6_6RND = "6076c87f232e5a31c233d50e", + MAGAZINE_12G_POWERMAG_20RND = "5cf8f3b0d7f00c00217872ef", + MAGAZINE_12G_SAI02_10RND = "5a966f51a2750c00156aacf6", + MAGAZINE_12G_SB5_5RND = "57616a9e2459773c7a400234", + MAGAZINE_20G_2001_SB3X2_2RND = "5a38ee51c4a282000c5a955c", + MAGAZINE_20G_SB3X4_4RND = "5a38ed75c4a28232996e40c6", + MAGAZINE_20G_SB3X5_5RND = "5c6161fb2e221600113fbde5", + MAGAZINE_20X1MM_DRUM_20RND = "66015dc4aaad2f54cb04c56a", + MAGAZINE_23X75_KS23MX3_3RND = "5f647d9f8499b57dc40ddb93", + MAGAZINE_30X29_AGS30_99RND = "5d52d479a4b936793d58c76b", + MAGAZINE_366TKM_6610_20RND = "587df583245977373c4f1129", + MAGAZINE_366TKM_6L10_30RND = "5a01c29586f77474660c694c", + MAGAZINE_366TKM_6P2_BAK_40RND = "5b1fb3e15acfc4001637f068", + MAGAZINE_366TKM_6P2_SB11_40RND = "59e5f5a486f7746c530b3ce2", + MAGAZINE_366TKM_AK103_30RND = "5ac66bea5acfc43b321d4aec", + MAGAZINE_366TKM_AK30_30RND = "59fafc5086f7740dbe19f6c3", + MAGAZINE_366TKM_AK30_FDE_30RND = "59fafc9386f774067d462453", + MAGAZINE_366TKM_AK55_30RND = "59d625f086f774661516605d", + MAGAZINE_366TKM_AKA16_73RND = "5c6175362e221600133e3b94", + MAGAZINE_366TKM_AKMS_AL_30RND = "5a0060fc86f7745793204432", + MAGAZINE_366TKM_AK_AL_10RND = "5b1fd4e35acfc40018633c39", + MAGAZINE_366TKM_AK_RIBBED_10RND = "59e5d83b86f7745aed03d262", + MAGAZINE_366TKM_GEN_M3_20RND = "64b9cf0ac12b9c38db26923a", + MAGAZINE_366TKM_GEN_M3_30RND = "59d6272486f77466146386ff", + MAGAZINE_366TKM_GEN_M3_BANANA_30RND = "5e21a3c67e40bd02257a008a", + MAGAZINE_366TKM_KCI_SKS_75RND = "61695095d92c473c7702147a", + MAGAZINE_366TKM_MOLOT_75RND = "5cbdc23eae9215001136a407", + MAGAZINE_366TKM_SKS_AALVX_35RND = "5c5970672e221602b21d7855", + MAGAZINE_366TKM_SKS_INT_10RND = "587df3a12459772c28142567", + MAGAZINE_366TKM_ULTIMAG_30RND = "6272874a6c47bd74f92e2087", + MAGAZINE_366TKM_VPO215_4RND = "5de653abf76fdc1ce94a5a2a", + MAGAZINE_366TKM_X47_762_50RND = "5cfe8010d7ad1a59283b14c6", + MAGAZINE_40X46_MSGL_0RND = "627bce33f21bc425b06ab967", + MAGAZINE_45ACP_1911_7RND = "5e81c4ca763d9f754677befa", + MAGAZINE_45ACP_G30_MAGEX_30RND = "5fb651dc85f90547f674b6f4", + MAGAZINE_45ACP_GLOCK_45_13RND = "5fb651b52b1b027b1f50bcff", + MAGAZINE_45ACP_MECGAR_11RND = "5ef3448ab37dfd6af863525c", + MAGAZINE_45ACP_UMP_45_25RND = "5fc3e466187fea44d52eda90", + MAGAZINE_45ACP_USP45T_12RND = "6193d3149fb0c665d5490e32", + MAGAZINE_45ACP_USP45_12RND = "6193d338de3cdf1d2614a6fc", + MAGAZINE_45ACP_WILSON_7RND = "5f3e77b26cda304dcc634057", + MAGAZINE_46X30_MP7_20RND = "5ba264f6d4351e0034777d52", + MAGAZINE_46X30_MP7_30RND = "5ba2657ed4351e0035628ff2", + MAGAZINE_46X30_MP7_40RND = "5ba26586d4351e44f824b340", + MAGAZINE_545X39_6L18_45RND = "564ca9df4bdc2d35148b4569", + MAGAZINE_545X39_6L20_30RND = "564ca99c4bdc2d16268b4589", + MAGAZINE_545X39_6L23_30RND = "55d480c04bdc2d1d4e8b456a", + MAGAZINE_545X39_6L23_PLUM_30RND = "5cbdaf89ae9215000e5b9c94", + MAGAZINE_545X39_6L26_45RND = "55d481904bdc2d8c2f8b456a", + MAGAZINE_545X39_6L31_60RND = "55d482194bdc2d1d4e8b456b", + MAGAZINE_545X39_AK12_30RND = "5bed61680db834001d2c45ab", + MAGAZINE_545X39_AK12_OLD_30RND = "649ec30cb013f04a700e60fb", + MAGAZINE_545X39_GEN_M3_30RND = "5aaa4194e5b5b055d06310a5", + MAGAZINE_545X39_RPK16_DRUM_95RND = "5bed625c0db834001c062946", + MAGAZINE_545X39_SAIGA_545_10RND = "55d4837c4bdc2d1d4e8b456c", + MAGAZINE_545X39_SAIGA_545_20RND = "64b9e265c94d0d15c5027e35", + MAGAZINE_556X45_6L29_30RND = "5ac66c5d5acfc4001718d314", + MAGAZINE_556X45_AUG_10RND = "630e1adbbd357927e4007c09", + MAGAZINE_556X45_AUG_30RND = "62e7c98b550c8218d602cbb4", + MAGAZINE_556X45_AUG_42RND = "630e295c984633f1fb0e7c30", + MAGAZINE_556X45_BATTLEMAG_30RND = "5c6d46132e221601da357d56", + MAGAZINE_556X45_C10_AK_30RND = "5c0548ae0db834001966a3c2", + MAGAZINE_556X45_G36_30RND = "62307b7b10d2321fa8741921", + MAGAZINE_556X45_GEN_M3_10RND = "5aaa5e60e5b5b000140293d6", + MAGAZINE_556X45_GEN_M3_20RND = "5448c1d04bdc2dff2f8b4569", + MAGAZINE_556X45_GEN_M3_30RND = "5aaa5dfee5b5b000140293d3", + MAGAZINE_556X45_GEN_M3_30RND_FDE = "6241c2c2117ad530666a5108", + MAGAZINE_556X45_GEN_M3_40RND = "544a378f4bdc2d30388b4567", + MAGAZINE_556X45_GEN_M3_FDE_30RND = "5d1340b3d7ad1a0b52682ed7", + MAGAZINE_556X45_GEN_M3_FDE_40RND = "5d1340bdd7ad1a0e8d245aab", + MAGAZINE_556X45_GEN_M3_WINDOW_30RND = "55802d5f4bdc2dac148b458e", + MAGAZINE_556X45_GEN_M3_WINDOW_FDE_30RND = "5d1340cad7ad1a0b0b249869", + MAGAZINE_556X45_HK_POLY_30RND = "5c6d42cb2e2216000e69d7d1", + MAGAZINE_556X45_HK_STEEL_30RND = "5c05413a0db834001c390617", + MAGAZINE_556X45_MAG5100_100RND = "5c6592372e221600133e47d7", + MAGAZINE_556X45_MAG560_60RND = "544a37c44bdc2d25388b4567", + MAGAZINE_556X45_MK16_30RND = "61840bedd92c473c77021635", + MAGAZINE_556X45_MK16_30RND_FDE = "61840d85568c120fdd2962a5", + MAGAZINE_556X45_PMAG_D60_60RND = "59c1383d86f774290a37e0ca", + MAGAZINE_556X45_PM_GEN2_30RND = "5c6d450c2e221600114c997d", + MAGAZINE_556X45_STANAG_30RND = "55d4887d4bdc2d962f8b4570", + MAGAZINE_57X28_57_20RND = "5d3eb5eca4b9363b1f22f8e4", + MAGAZINE_57X28_P90_50RND = "5cc70093e4a949033c734312", + MAGAZINE_762X25TT_PPSH_35RND = "5ea034eb5aad6446a939737b", + MAGAZINE_762X25TT_PPSH_71RND = "5ea034f65aad6446a939737e", + MAGAZINE_762X25TT_TT105_8RND = "571a29dc2459771fb2755a6a", + MAGAZINE_762X39_BUBEN_100RND = "6513f0a194c72326990a3868", + MAGAZINE_762X51_417_762_10RND = "617130016c780c1e710c9a24", + MAGAZINE_762X51_417_762_20RND = "617131a4568c120fdd29482d", + MAGAZINE_762X51_AA70_10RND = "5d25af8f8abbc3055079fec5", + MAGAZINE_762X51_AA70_20RND = "5cf12a15d7f00c05464b293f", + MAGAZINE_762X51_AICS_10RND = "5d25a6538abbc306c62e630d", + MAGAZINE_762X51_AICS_5RND = "5d25a4a98abbc30b917421a4", + MAGAZINE_762X51_AXMC_308_10RND = "628120f210e26c1f344e6558", + MAGAZINE_762X51_DVL10_10RND = "5888988e24597752fe43a6fa", + MAGAZINE_762X51_KAC_762_10RND = "5df8f535bb49d91fb446d6b0", + MAGAZINE_762X51_KAC_762_20RND = "5df8f541c41b2312ea3335e3", + MAGAZINE_762X51_L1A1_30RND = "5b7d37845acfc400170e2f87", + MAGAZINE_762X51_L7AWM_20RND = "65293c38fc460e50a509cb25", + MAGAZINE_762X51_L7AWM_25RND = "65293c7a17e14363030ad308", + MAGAZINE_762X51_M14_30RND = "5addcce35acfc4001a5fc635", + MAGAZINE_762X51_M1A_10RND = "64b9e2037fdfb81df81e3c25", + MAGAZINE_762X51_M1A_20RND = "5aaf8a0be5b5b00015693243", + MAGAZINE_762X51_MDT_12RND = "5d25a6a48abbc306c62e6310", + MAGAZINE_762X51_MK17_20RND = "618168dc8004cc50514c34fc", + MAGAZINE_762X51_MK17_20RND_FDE = "6183d53f1cb55961fa0fdcda", + MAGAZINE_762X51_PMAG_762_20RND = "5a3501acc4a282000d72293a", + MAGAZINE_762X51_PMAG_AC_10RND = "5d25a7b88abbc3054f3e60bc", + MAGAZINE_762X51_PMAG_AC_5RND = "5ce69cbad7f00c00b61c5098", + MAGAZINE_762X51_SA58FAL_10RND = "5b7bef1e5acfc43d82528402", + MAGAZINE_762X51_SA58FAL_20RND = "5b099ac65acfc400186331e1", + MAGAZINE_762X51_SA58FAL_30RND = "5b7bef5d5acfc43bca7067a3", + MAGAZINE_762X51_SA58_MMW_20RND = "5b7c2d1d5acfc43d1028532a", + MAGAZINE_762X51_T5000M_5RND = "5df25b6c0b92095fd441e4cf", + MAGAZINE_762X51_VPO101_10RND = "5c503ad32e2216398b5aada2", + MAGAZINE_762X51_VPO101_5RND = "5c503ac82e221602b21d6e9a", + MAGAZINE_762X51_WYATT_10RND = "5bfeaa0f0db834001b734927", + MAGAZINE_762X51_WYATT_5RND = "5bfea7ad0db834001c38f1ee", + MAGAZINE_762X51_X14_762_50RND = "5addccf45acfc400185c2989", + MAGAZINE_762X51_XFAL_50RND = "5b7bef9c5acfc43d102852ec", + MAGAZINE_762X54R_AA762R_02_10RND = "5bae13ded4351e44f824bf38", + MAGAZINE_762X54R_AVT_15RND = "641074a07fd350b98c0b3f96", + MAGAZINE_762X54R_MOSIN_5RND = "5ae0973a5acfc4001562206c", + MAGAZINE_762X54R_PKTM_250RND = "65785979bec02a3fe82c181e", + MAGAZINE_762X54R_PK_100RND = "646372518610c40fc20204e8", + MAGAZINE_762X54R_SV98_10RND = "559ba5b34bdc2d1f1a8b4582", + MAGAZINE_762X54R_SVD_10RND = "5c471c442e221602b542a6f8", + MAGAZINE_762X54R_SVD_20RND = "5c88f24b2e22160bc12c69a6", + MAGAZINE_762X54R_SVT_10_10RND = "6422e1ea3c0f06190302161a", + MAGAZINE_86X70_AXMC_338LM_10RND = "628120fd5631d45211793c9f", + MAGAZINE_86X70_MK18_10RND = "5fc23426900b1d5091531e15", + MAGAZINE_9X18PM_APS_20RND = "5a17fb03fcdbcbcae668728f", + MAGAZINE_9X18PM_PM_8RND = "5448c12b4bdc2d02308b456f", + MAGAZINE_9X18PM_PM_DRUM_84RND = "55d485be4bdc2d962f8b456f", + MAGAZINE_9X18PM_PP91_20RND = "57d14e1724597714010c3f4b", + MAGAZINE_9X18PM_PP91_30RND = "57d1519e24597714373db79d", + MAGAZINE_9X19_BIG_STICK_24RND = "630769c4962d0247b029dc60", + MAGAZINE_9X19_BIG_STICK_31RND = "630767c37d50ff5e8a1ea71a", + MAGAZINE_9X19_BIG_STICK_33RND = "5a7ad2e851dfba0016153692", + MAGAZINE_9X19_CR_CYL_6RND = "624c3074dbbd335e8e6becf3", + MAGAZINE_9X19_G19X_19RND = "63076701a987397c0816d21b", + MAGAZINE_9X19_GL9_21RND = "5a718da68dc32e000d46d264", + MAGAZINE_9X19_GLOCK_9X19_17RND = "5a718b548dc32e000d46d262", + MAGAZINE_9X19_G_SGMT_50RND = "5a718f958dc32e00094b97e7", + MAGAZINE_9X19_M9A3_17RND = "5cadc2e0ae9215051e1c21e7", + MAGAZINE_9X19_MP443_18RND = "576a5ed62459771e9c2096cb", + MAGAZINE_9X19_MP5_20RND = "5d2f213448f0355009199284", + MAGAZINE_9X19_MP5_30RND = "5926c3b286f774640d189b6b", + MAGAZINE_9X19_MP9_15RND = "5de8e8dafd6b4e6e2276dc32", + MAGAZINE_9X19_MP9_20RND = "5de8ea8ffd6b4e6e2276dc35", + MAGAZINE_9X19_MP9_25RND = "5de8eaadbbaf010b10528a6d", + MAGAZINE_9X19_MP9_30RND = "5de8eac42a78646d96665d91", + MAGAZINE_9X19_MPX_20RND = "5c5db6552e2216001026119d", + MAGAZINE_9X19_MPX_30RND = "5894a05586f774094708ef75", + MAGAZINE_9X19_MPX_DRUM_50RND = "5c5db6742e2216000f1b2852", + MAGAZINE_9X19_MPX_TTI_41RND = "5c5db6652e221600113fba51", + MAGAZINE_9X19_P226_15RND = "56d59948d2720bb7418b4582", + MAGAZINE_9X19_P226_20RND = "5c920e902e221644f31c3c99", + MAGAZINE_9X19_PL15_16RND = "602286df23506e50807090c6", + MAGAZINE_9X19_PP1901_30RND = "599860ac86f77436b225ed1a", + MAGAZINE_9X19_SB7_10RND = "5998529a86f774647f44f421", + MAGAZINE_9X19_SG919_20RND = "5c0673fb0db8340023300271", + MAGAZINE_9X19_SG919_30RND = "5c0672ed0db834001b7353f3", + MAGAZINE_9X19_X5_MP5_50RND = "5a351711c4a282000b1521a4", + MAGAZINE_9X21_SR1MP_18RND = "59f99a7d86f7745b134aa97b", + MAGAZINE_9X21_SR2M_20RND = "633a98eab8b0506e48497c1a", + MAGAZINE_9X21_SR2M_30RND = "62e153bcdb1a5c41971c1b5b", + MAGAZINE_9X33R_CR_CYL_6RND = "619f54a1d25cbd424731fb99", + MAGAZINE_9X39_6L24_10RND = "57838f0b2459774a256959b2", + MAGAZINE_9X39_6L25_20RND = "57838f9f2459774a150289a0", + MAGAZINE_9X39_9A91_20RND = "6450ec2e7da7133e5a09ca96", + MAGAZINE_9X39_SR3M130_30RND = "5a9e81fba2750c00164f6b11", + MAP_CUSTOMS_PLAN = "5798a2832459774b53341029", + MAP_FACTORY_PLAN = "574eb85c245977648157eec3", + MAP_INTERCHANGE_PLAN = "5be4038986f774527d3fae60", + MAP_SHORELINE_HEALTH_RESORT_PLAN = "5a80a29286f7742b25692012", + MAP_SHORELINE_PLAN = "5a8036fb86f77407252ddc02", + MAP_WOODS_PLAN = "5900b89686f7744e704a8747", + MARKOFUNKNOWN_MARK_OF_THE_UNHEARD = "65ddcc9cfa85b9f17d0dfb07", + MARKSMANRIFLE_HK_G28_762X51_MARKSMAN_RIFLE = "6176aca650224f204c1da3fb", + MARKSMANRIFLE_KELTEC_RFB_762X51_RIFLE = "5f2a9575926fd9352339381f", + MARKSMANRIFLE_KNIGHTS_ARMAMENT_COMPANY_SR25_762X51_MARKSMAN_RIFLE = "5df8ce05b11454561e39243b", + MARKSMANRIFLE_REMINGTON_R11_RSASS_762X51_MARKSMAN_RIFLE = "5a367e5dc4a282000e49738f", + MARKSMANRIFLE_SPRINGFIELD_ARMORY_M1A_762X51_RIFLE = "5aafa857e5b5b00018480968", + MARKSMANRIFLE_SVDS_762X54R_SNIPER_RIFLE = "5c46fbd72e2216398b5a8c9c", + MARKSMANRIFLE_SWORD_INTERNATIONAL_MK18_338_LM_MARKSMAN_RIFLE = "5fc22d7c187fea44d52eda44", + MARKSMANRIFLE_VSS_VINTOREZ_9X39_SPECIAL_SNIPER_RIFLE = "57838ad32459774a17445cd2", + MEDICAL_ALUMINUM_SPLINT = "5af0454c86f7746bf20992e8", + MEDICAL_ARMY_BANDAGE = "5751a25924597722c463c472", + MEDICAL_ASEPTIC_BANDAGE = "544fb25a4bdc2dfb738b4567", + MEDICAL_CALOKB_HEMOSTATIC_APPLICATOR = "5e8488fa988a8701445df1e4", + MEDICAL_CAT_HEMOSTATIC_TOURNIQUET = "60098af40accd37ef2175f27", + MEDICAL_CMS_SURGICAL_KIT = "5d02778e86f774203e7dedbe", + MEDICAL_ESMARCH_TOURNIQUET = "5e831507ea0a7c419c2f9bd9", + MEDICAL_IMMOBILIZING_SPLINT = "544fb3364bdc2d34748b456a", + MEDICAL_SANITAR_KIT = "5e99735686f7744bfc4af32c", + MEDICAL_SURV12_FIELD_SURGICAL_KIT = "5d02797c86f774203f38e30a", + MEDKIT_AFAK_TACTICAL_INDIVIDUAL_FIRST_AID_KIT = "60098ad7c2240c0fe85c570a", + MEDKIT_AI2 = "5755356824597772cb798962", + MEDKIT_CAR_FIRST_AID_KIT = "590c661e86f7741e566b646a", + MEDKIT_GRIZZLY_MEDICAL_KIT = "590c657e86f77412b013051d", + MEDKIT_IFAK_INDIVIDUAL_FIRST_AID_KIT = "590c678286f77426c9660122", + MEDKIT_SALEWA_FIRST_AID_KIT = "544fb45d4bdc2dee738b4568", + MEDKIT_SANITARS_FIRST_AID_KIT = "5e99711486f7744bfc4af328", + MONEY_DOLLARS = "5696686a4bdc2da3298b456a", + MONEY_EUROS = "569668774bdc2da2298b4568", + MONEY_GP_COIN = "5d235b4d86f7742e017bc88a", + MONEY_ROUBLES = "5449016a4bdc2d6f028b456f", + MOUNT_AIMPOINT_LRP_MOUNT_FOR_COMPM4_SIGHTS = "5c7d55f52e221644f31bff6a", + MOUNT_AIMPOINT_MICRO_H2_STANDARD = "616554fe50224f204c1da2aa", + MOUNT_AIMPOINT_MICRO_SPACER_HIGH = "58d39b0386f77443380bf13c", + MOUNT_AIMPOINT_MICRO_STANDARD = "58d39d3d86f77445bb794ae7", + MOUNT_AIMPOINT_QRP2_MOUNT_FOR_COMPM4PRO_SIGHTS = "616584766ef05c2ce828ef57", + MOUNT_AIMPOINT_STANDARD_SPACER = "5c7d560b2e22160bc12c6139", + MOUNT_AI_AX50_34MM_SCOPE = "62811f461d5df4475f46a332", + MOUNT_AI_AXMC_ADAPTER_KIT_MEDIUM_LENGTH_RAIL = "628120dd308cb521f87a8fa1", + MOUNT_AI_AXMC_ADAPTER_KIT_SHORT_LENGTH_RAIL = "628120d309427b40ab14e76d", + MOUNT_AI_AXMC_AT_X_TOP_RAIL = "628120c21d5df4475f46a337", + MOUNT_AKS74U_ZENIT_B18 = "57ffb0062459777a045af529", + MOUNT_AK_ZENIT_B12 = "57ffaea724597779f52b3a4d", + MOUNT_ALEXANDER_ARMS_10_INCH_RAIL = "5b30bc285acfc47a8608615d", + MOUNT_ALEXANDER_ARMS_3_INCH_RAIL = "5b30bc165acfc40016387293", + MOUNT_ANPVS14_NOROTOS_DUAL_DOVETAIL = "5a16b93dfcdbcbcae6687261", + MOUNT_ARMASIGHT_VULCAN_UNIVERSAL_BASE = "5b3b6dc75acfc47a8773fb1e", + MOUNT_ARMASIGHT_ZEUS_UNIVERSAL_BASE = "63fc449f5bd61c6cf3784a88", + MOUNT_AXION_KOBRA_DOVETAIL = "591ee00d86f774592f7b841e", + MOUNT_BENELLI_M3_SUPER_90_UPPER_RECEIVER_TOP_RAIL = "625ed7c64d9b6612df732146", + MOUNT_BT_QD_NAR_MOUNT_FOR_AIMPOINT_ACRO = "615d8d878004cc50514c3233", + MOUNT_BURRIS_ARPEPR_30MM_RING_SCOPE = "5b2389515acfc4771e1be0c0", + MOUNT_BURRIS_FASTFIRE_WEAVER_BASE = "577d128124597739d65d0e56", + MOUNT_CNC_GUNS_KEYMOD_2_INCH_RAIL = "623c2f652febb22c2777d8d7", + MOUNT_CNC_GUNS_KEYMOD_4_INCH_RAIL = "623c2f4242aee3103f1c44b7", + MOUNT_CUSTOM_GUNS_HANDGUARD_RAIL = "6086b5392535c57a13424d70", + MOUNT_DANIEL_DEFENSE_25MM_ACCESSORY_RING = "6267c6396b642f77f56f5c1c", + MOUNT_DELTAPOINT_CROSS_SLOT_MOUNT_BASE = "58d2664f86f7747fec5834f6", + MOUNT_DELTATEK_SPRUT_MOUNT_FOR_PUMPACTION_SHOTGUNS = "55d48ebc4bdc2d8c2f8b456c", + MOUNT_ETMI019_SHOTGUN_RAIL = "5dfe14f30b92095fd441edaf", + MOUNT_FN_FIVESEVEN_MK2_RMR = "5d7b6bafa4b93652786f4c76", + MOUNT_FN_P90_EFFEN_90_RECEIVER_RAIL = "5cc7012ae4a949001252b43e", + MOUNT_FN_P90_UPPER_RECEIVER_SIDE_RAIL = "5cc70146e4a949000d73bf6b", + MOUNT_FN_P90_UPPER_RECEIVER_TOP_RAIL = "5cc7015ae4a949001152b4c6", + MOUNT_FN_SCAR_BOTTOM_RAIL = "61816df1d3a39d50044c139e", + MOUNT_FN_SCAR_KINETIC_MREX_65_MLOK_RAIL = "619666f4af1f5202c57a952d", + MOUNT_FN_SCAR_PWS_SRX_RAIL_EXTENSION = "61965d9058ef8c428c287e0d", + MOUNT_FN_SCAR_SIDE_RAIL = "61816dfa6ef05c2ce828f1ad", + MOUNT_GBRS_AIMPOINT_HYDRA_MOUNT_KIT_BLACK = "65392f611406374f82152ba5", + MOUNT_GBRS_AIMPOINT_HYDRA_MOUNT_KIT_FDE = "653931da5db71d30ab1d6296", + MOUNT_GEISSELE_SUPER_PRECISION_30MM_RING_SCOPE = "618b9643526131765025ab35", + MOUNT_GEISSELE_SUPER_PRECISION_30MM_RING_SCOPE_MOUNT_DDC = "618bab21526131765025ab3f", + MOUNT_GEISSELE_SUPER_PRECISION_TOP_RING_CAP = "618b9671d14d6d5ab879c5ea", + MOUNT_GEISSELE_SUPER_PRECISION_TOP_RING_CAP_DDC = "618ba91477b82356f91ae0e8", + MOUNT_GLOCK_AIMTECH_MOUNT_BASE = "5a7ad4af51dfba0013379717", + MOUNT_GLOCK_AIMTECH_TIGER_SHARK_SIGHT = "5a7ad55551dfba0015068f42", + MOUNT_GLOCK_TANGODOWN_AAM01_ACRO_MOUNT_BASE = "615d8da4d3a39d50044c10e8", + MOUNT_HARTMAN_LENOK_70MM_RAIL = "65434a4e4e3a01736a6c9706", + MOUNT_HENSOLDT_RIS_TOP_RAIL = "622efdf8ec80d870d349b4e5", + MOUNT_HEXAGON_MEDIUM_LENGTH_RAIL = "5b800ebc86f774394e230a90", + MOUNT_HEXAGON_MEDIUM_LENGTH_RAIL_ANODIZED_RED = "5b8403a086f7747ff856f4e2", + MOUNT_HEXAGON_SHORT_LENGTH_RAIL = "5b800ed086f7747baf6e2f9e", + MOUNT_HEXAGON_SHORT_LENGTH_RAIL_ANODIZED_RED = "5b84038986f774774913b0c1", + MOUNT_HK_G36_BOTTOM_HANDGUARD_RAIL = "62444cb99f47004c781903eb", + MOUNT_HK_G36_MAGWELL = "622f02437762f55aaa68ac85", + MOUNT_HK_G36_OPTIC_RAIL_WITH_FLIPUP_SIGHTS = "622b3d5cf9cfc87d675d2de9", + MOUNT_HK_G36_SIDE_HANDGUARD_RAIL = "62444cd3674028188b052799", + MOUNT_HK_G36_SIGHT = "622b3c081b89c677a33bcda6", + MOUNT_HK_G36_STANAG_MAGWELL = "622f039199f4ea1a4d6c9a17", + MOUNT_HK_MP5SD_BT_TRIRAIL_RING = "59c63b4486f7747afb151c1c", + MOUNT_HK_MP5_BT_TRIRAIL_RECEIVER = "5a966ec8a2750c00171b3f36", + MOUNT_HK_MP5_MFI_HK_UNIVERSAL_LOW_PROFILE_SCOPE = "5926dad986f7741f82604363", + MOUNT_HK_UMP_BOTTOM_HANDGUARD_RAIL = "5fc53954f8b6a877a729eaeb", + MOUNT_HK_UMP_SIDE_HANDGUARD_RAIL = "5fc5396e900b1d5091531e72", + MOUNT_HK_USP_45_ACP_ELITE_COMPENSATOR = "619621a4de3cdf1d2614a7a7", + MOUNT_HK_USP_45_ACP_MATCH_COMPENSATOR = "619624b26db0f2477964e6b0", + MOUNT_HK_USP_RAIL_ADAPTER = "6196255558ef8c428c287d1c", + MOUNT_IEA_MILOPTICS_KHF_34MM_ONEPIECE_MAG = "5c86592b2e2216000e69e77c", + MOUNT_JP_ENTERPRISES_FLATTOP_30MM_RING_SCOPE = "5a37ca54c4a282000d72296a", + MOUNT_KAC_URX_3_3_INCH_RAIL = "5d133067d7ad1a33013f95b4", + MOUNT_KIBA_ARMS_25MM_ACCESSORY_RING = "57d17e212459775a1179a0f5", + MOUNT_KIBA_ARMS_SHORT_MOUNT_SIGHT_ADAPTER = "5c1cdd302e221602b3137250", + MOUNT_KIBA_ARMS_SPRM_RAIL_MOUNT_FOR_PUMPACTION_SHOTGUNS = "55d48a634bdc2d8b2f8b456a", + MOUNT_KMZ_1P59_DOVETAIL = "5d0a29ead7ad1a0026013f27", + MOUNT_KMZ_1P69_WEAVER = "5d0a29fed7ad1a002769ad08", + MOUNT_KRISS_VECTOR_BOTTOM_RAIL = "5fbb976df9986c4cff3fe5f2", + MOUNT_KRISS_VECTOR_MK5_MODULAR_RAIL = "5fbb978207e8a97d1f0902d3", + MOUNT_KRISS_VECTOR_SIDE_RAIL = "5fce0f9b55375d18a253eff2", + MOUNT_LARUE_LT101_QD_TACTICAL_PICATINNY_RISER = "5c064c400db834001d23f468", + MOUNT_LEAPERS_UTG_25MM_RING_SCOPE = "5dff77c759400025ea5150cf", + MOUNT_LOBAEV_ARMS_30MM_SCOPE = "57c69dd424597774c03b7bbc", + MOUNT_M14_AMEGA_MINI_SCOUT_MOUNT_SYSTEM = "5addbfd15acfc40015621bde", + MOUNT_M14_ARMS_18_SCOPE = "5addbfe15acfc4001a5fc58b", + MOUNT_M14_LEAPERS_UTG_4POINT_LOCKING_DELUXE = "5addbfef5acfc400185c2857", + MOUNT_M14_SAGE_INTERNATIONAL_DCSB = "5addbffe5acfc4001714dfac", + MOUNT_M14_ULTIMAK_M8_FORWARD_OPTIC = "5addbfbb5acfc400194dbcf7", + MOUNT_M14_VLTOR_CASV14_RAIL_SYSTEM = "5addc00b5acfc4001669f144", + MOUNT_M1911A1_NCSTAR_TRIGGER_GUARD = "5ef369b08cef260c0642acaf", + MOUNT_M1911A1_WEIGAND_WEIGATINNY_RAIL = "5ef5d994dfbc9f3c660ded95", + MOUNT_M1A_SOCOM_16_UPPER_PART = "5ab24ef9e5b5b00fe93c9209", + MOUNT_M700_30MM_INTEGRAL_RING_SCOPE = "5bfebc5e0db834001a6694e5", + MOUNT_M700_AB_ARMS_MODX_RAIL = "5cde7b43d7f00c000d36b93e", + MOUNT_M700_EXTENDED_MULTISLOT_WEAVER_RAIL_BASE = "5bfebc530db834001d23eb65", + MOUNT_M700_MAGPUL_PRO_700_CHASSIS_INLINE = "5cdeaca5d7f00c00b61c4b70", + MOUNT_M870_LEAPERS_UTG_PRO_MTU028SG_RAIL = "5a7893c1c585673f2b5c374d", + MOUNT_M870_MESA_TACTICAL_MAGAZINE_CLAMP = "5a789261c5856700186c65d3", + MOUNT_M870_XS_SHOTRAIL_RAIL_WITH_GHOST_RING_REAR_SIGHT = "5a78948ec5856700177b1124", + MOUNT_MAGPUL_MLOK_25_INCH_RAIL = "5b7be47f5acfc400170e2dd2", + MOUNT_MAGPUL_MLOK_41_INCH_RAIL = "5b7be4895acfc400170e2dd5", + MOUNT_MAGPUL_MLOK_CANTILEVER = "6269220d70b6c02e665f2635", + MOUNT_MAGPUL_MLOK_OFFSET_LIGHT = "6269545d0e57f218e4548ca2", + MOUNT_MOSIN_RIFLE_AIM_SPORTS_MNG_RAIL = "5bc5a372d4351e44f824d17f", + MOUNT_MOSIN_RIFLE_AIM_SPORTS_TRIRAIL = "5bbdb811d4351e45020113c7", + MOUNT_MOSIN_RIFLE_ARBALET_PATRIOT_KW_RAIL = "5d024f5cd7ad1a04a067e91a", + MOUNT_MOSIN_RIFLE_KOCHETOV = "5b3f7bf05acfc433000ecf6b", + MOUNT_MOSSBERG_590A1_TACTICAL_RAIL = "5eeb2ff5ea4f8b73c827350b", + MOUNT_MP133153_TAKTIKA_TULA_12003_STOCK_ADAPTER = "5bfe7fb30db8340018089fed", + MOUNT_MP155_ULTIMA_SHORT_RAIL = "607ea812232e5a31c233d53c", + MOUNT_MP155_ULTIMA_TOP_RAIL = "60785ce5132d4d12c81fd918", + MOUNT_MP18_SIGHT = "61f804acfcba9556ea304cb8", + MOUNT_MP443_GRACH_ZENIT_B8 = "576a7c512459771e796e0e17", + MOUNT_MP9_BOTTOM_RAIL = "5de8fbf2b74cd90030650c79", + MOUNT_MP9_SIDE_RAIL = "5de8fc0b205ddc616a6bc51b", + MOUNT_MPX_GEN1_HANDGUARD_2_INCH_RAIL = "58a56f8d86f774651579314c", + MOUNT_MPX_GEN1_HANDGUARD_4_INCH_RAIL = "58a5c12e86f7745d585a2b9e", + MOUNT_NCSTAR_MPR45_BACKUP = "5649a2464bdc2d91118b45a8", + MOUNT_NIGHTFORCE_MAGMOUNT_30MM_RING_SCOPE = "5b3b99265acfc4704b4a1afb", + MOUNT_NIGHTFORCE_MAGMOUNT_34MM_RING_SCOPE = "5aa66a9be5b5b0214e506e89", + MOUNT_NIGHTFORCE_MAGMOUNT_34MM_RING_SCOPE_MOUNT_WITH_RUGGEDIZED_ACCESSORY_PLATFORM = "5aa66c72e5b5b00016327c93", + MOUNT_NOROTOS_TITANIUM_ADVANCED_TACTICAL = "5a16b8a9fcdbcb00165aa6ca", + MOUNT_NPZ_1P781_DOVETAIL = "618a75c9a3884f56c957ca1b", + MOUNT_OPSCORE_PICATINNY_RAIL_ADAPTER = "5a398b75c4a282000a51a266", + MOUNT_OPSCORE_SINGLE_CLAMP_RAIL_ADAPTER = "5a398ab9c4a282000c5a9842", + MOUNT_OPSKS_DOVETAIL = "587e08ee245977446b4410cf", + MOUNT_OPSKS_UPPER_BAND = "634f05a21f9f536910079b56", + MOUNT_ORSIS_T5000M_LONG_LENGTH_RAIL = "5df35ea9c41b2312ea3334d8", + MOUNT_ORSIS_T5000M_MEDIUM_LENGTH_RAIL = "5df35eb2b11454561e3923e2", + MOUNT_ORSIS_T5000M_SCOPE = "5df35e970b92095fd441e4d2", + MOUNT_P226_BRIDGE_SIGHT = "5b3a08b25acfc4001754880c", + MOUNT_P226_TRIJICON_RMR = "5a32aa0cc4a28232996e405f", + MOUNT_PK_ZENIT_B50_16MM_TOP = "6492c6dd60fdb10a020621a2", + MOUNT_PK_ZENIT_B50_66MM_TOP = "6492c8bba6e68e06fb0bae87", + MOUNT_PNV10T_DOVETAIL_ADAPTER = "5c0695860db834001b735461", + MOUNT_PP91_KEDR_ROTOR_43_RIS = "57ee59b42459771c7b045da5", + MOUNT_PRECISION_REFLEX_HANDGUARD_BOTTOM_RAIL = "6388c4ac8d895f557a0c6515", + MOUNT_PRECISION_REFLEX_HANDGUARD_LONG_TOP_RAIL = "6388c5d19c00405f4717c0f0", + MOUNT_PRECISION_REFLEX_HANDGUARD_SHORT_SIDE_RAIL = "6388c4478d895f557a0c6512", + MOUNT_PU_35X_RING_SCOPE = "5b3f7c005acfc4704b4a1de8", + MOUNT_PVS7_WILCOX_ADAPTER = "5c11046cd174af02a012e42b", + MOUNT_RECKNAGEL_ERATAC_30MM_RING_SCOPE = "6171407e50224f204c1da3c5", + MOUNT_RECKNAGEL_ERATAC_34MM_RING_SCOPE = "61713cc4d8e3106d9806c109", + MOUNT_RECKNAGEL_ERATAC_SUNSHADE_MOUNT_FOR_AIMPOINT_T1_SIGHTS = "61714b2467085e45ef140b2c", + MOUNT_REMINGTON_RAHG_2_INCH_RAIL = "5c0102aa0db834001b734ba1", + MOUNT_REMINGTON_RAHG_4_INCH_RAIL = "5c0102b20db834001d23eebc", + MOUNT_REPTILIA_ROF90_RMR_MOUNT_FOR_GEISSELE_SCOPE_MOUNTS = "618b9682a3884f56c957ca78", + MOUNT_REPTILIA_ROF90_RMR_MOUNT_FOR_GEISSELE_SCOPE_MOUNTS_DDC = "618ba92152ecee1505530bd3", + MOUNT_RFB_HANDGUARD_RAIL = "5f2aa493cd375f14e15eea72", + MOUNT_RFB_SCOPE_RAIL = "5f2aa49f9b44de6b1b4e68d4", + MOUNT_RPK16_HANDGUARD_RAIL = "5beecbb80db834001d2c465e", + MOUNT_SAG_AK_DOVETAIL_SIDE = "63d114019e35b334d82302f7", + MOUNT_SAG_BIT_LOW_PROFILE_DOVETAIL_SIDE = "638db77630c4240f9e06f8b6", + MOUNT_SIG_ALPHA4_30MM_RING_SCOPE = "6567e751a715f85433025998", + MOUNT_SIG_SAUER_ROMEO_SIGHT = "5b31163c5acfc400153b71cb", + MOUNT_SKS_CHOATE_SCOPE = "6415d33eda439c6a97048b5b", + MOUNT_SKS_LEAPERS_UTG_SOCOM_RAIL = "593d1fa786f7746da62d61ac", + MOUNT_SKS_TAPCO_INTRAFUSE_CHASSIS_LOWER_RAIL = "653ed19d22e1ef3d9002c328", + MOUNT_SKS_UPPER_BAND = "634f04d82e5def262d0b30c6", + MOUNT_SR1MP_QUAD_RAIL = "5a27bad7c4a282000b15184b", + MOUNT_SR1MP_SINGLE_RAIL = "5a27b281c4a28200741e1e52", + MOUNT_SR1MP_SOUND_SUPPRESSOR = "5a27b3d0c4a282000d721ec1", + MOUNT_SR2M_SHORT_SIDE_RAIL = "62ed189fb3608410ef5a2bfc", + MOUNT_SR2M_SIDE_RAIL = "62ed1921b3608410ef5a2c04", + MOUNT_SR2M_ZENIT_B17 = "62e281349ecd3f493f6df954", + MOUNT_STEYR_AUG_A3_M1_HIGH_SIGHT = "62e7c8f91cd3fde4d503d690", + MOUNT_STEYR_AUG_A3_M1_LOW_SIGHT = "62ebba1fb658e07ef9082b5a", + MOUNT_STRIKE_INDUSTRIES_KEYMOD_4_INCH_RAIL = "5a9d6d00a2750c5c985b5305", + MOUNT_STRIKE_INDUSTRIES_KEYMOD_6_INCH_RAIL = "5a9d6d13a2750c00164f6b03", + MOUNT_STRIKE_INDUSTRIES_TRAX_BRIDGE_RAIL = "5a9d6d21a2750c00137fa649", + MOUNT_SVDS_UPPER_BAND = "5c471c2d2e22164bef5d077f", + MOUNT_SVD_CAA_DRG_L1_BARREL_MOUNT_RAIL = "5e569a132642e66b0b68015c", + MOUNT_SVD_CAA_XD_RGL_RECEIVER = "5e569a2e56edd02abe09f280", + MOUNT_SVD_MODERNIZATION_KIT_TOP_RAIL = "5e569a0156edd02abe09f27d", + MOUNT_SVD_SAG_LOW_PROFILE_SIDE = "5dff8db859400025ea5150d4", + MOUNT_SVT40_TOKAREV_PU = "641dc35e19604f20c800be18", + MOUNT_TOZ106_DOVETAIL = "5c6162682e22160010261a2b", + MOUNT_TOZ106_RAIL_SCOPE = "5c61627a2e22160012542c55", + MOUNT_TRIJICON_RMR_HIGH_PROFILE = "5a33b652c4a28232996e407c", + MOUNT_TRIJICON_RMR_LOW_PROFILE = "5a33b2c9c4a282000c5a9511", + MOUNT_TRIJICON_RMR_MOUNT_FOR_ACOG_SCOPES = "5a33bab6c4a28200741e22f8", + MOUNT_TRIJICON_TA51_SIGHT = "59db7eed86f77461f8380365", + MOUNT_TROY_QARS_32_INCH_RAIL = "5b4736a986f774040571e998", + MOUNT_TROY_QARS_42_INCH_RAIL = "5b4736b986f77405cb415c10", + MOUNT_UM_TACTICAL_UM3_PISTOL_SIGHT = "5a7b4900e899ef197b331a2a", + MOUNT_UNV_DLOCIRD_SIGHT = "5a1ead28fcdbcb001912fa9f", + MOUNT_VLTOR_CASV_2_INCH_RAIL = "5b7be4575acfc400161d0832", + MOUNT_VLTOR_CASV_4_INCH_RAIL = "5b7be4645acfc400170e2dcc", + MOUNT_VLTOR_CASV_5_INCH_RAIL = "5b7be46e5acfc400170e2dcf", + MOUNT_VLTOR_CASV_KEYMOD_2_INCH_RAIL = "59e0bdb186f774156f04ce82", + MOUNT_VLTOR_CASV_KEYMOD_4_INCH_RAIL = "59e0be5d86f7742d48765bd2", + MOUNT_VLTOR_CASV_KEYMOD_6_INCH_RAIL = "59e0bed186f774156f04ce84", + MOUNT_VOMZ_PILAD_04302_DOVETAIL = "57acb6222459771ec34b5cb0", + MOUNT_VPO102_ARBALET = "609a4b4fe2ff132951242d04", + MOUNT_VPO215_GORNOSTAY_SCOPE_RAIL = "5de6558e9f98ac2bc65950fc", + MOUNT_VSSVAL_TOZ_6P29M = "59eb7ebe86f7740b373438ce", + MOUNT_VSSVAL_ZENIT_B3_MOUNT_COMBO = "5a9fc7e6a2750c0032157184", + MOUNT_VSSVAL_ZENIT_B3_RING = "57a3459f245977764a01f703", + MOUNT_ZENIT_B13V_KLASSIKA_DOVETAIL_RAIL_PLATFORM = "5c90c3622e221601da359851", + MOUNT_ZENIT_B13_KLASSIKA_DOVETAIL_RAIL_PLATFORM = "5c61a40d2e2216001403158d", + MOUNT_ZENIT_KR2_OLD_GEN = "646f6322f43d0c5d62063715", + MUZZLECOMBO_9A91_HANDGUARD_RETAINER = "64527a263d52156624001fd7", + MUZZLECOMBO_AI_AXMC_THREAD_PROTECTION_CAP = "628120621d5df4475f46a335", + MUZZLECOMBO_AKM_762X39_KIBA_ARMS_308_MUZZLE_DEVICE_ADAPTER = "615d8e9867085e45ef1409c6", + MUZZLECOMBO_AK_762X39_TAKTIKA_TULA_MUZZLE_ADAPTER = "5a0abb6e1526d8000a025282", + MUZZLECOMBO_AK_CNC_WARRIOR_556X45_MUZZLE_DEVICE_ADAPTER = "5e21ca18e4d47f0da15e77dd", + MUZZLECOMBO_AWC_PSR_MUZZLE_BRAKE_PROTECTOR = "612e0e04568c120fdd294258", + MUZZLECOMBO_GEMTECH_ONE_DIRECT_THREAD_MOUNT_ADAPTER = "5c7954d52e221600106f4cc7", + MUZZLECOMBO_GK01_12GA_COMPENSATOR = "5580239d4bdc2de7118b4583", + MUZZLECOMBO_GK02_12GA_MUZZLE_BRAKE = "58272d7f2459774f6311ddfd", + MUZZLECOMBO_GLOCK_9X19_DOUBLE_DIAMOND_THREAD_PROTECTOR = "5a6b592c8dc32e00094b97bf", + MUZZLECOMBO_GLOCK_9X19_LONE_WOLF_ALPHAWOLF_THREAD_PROTECTOR = "5a6b585a8dc32e5a9c28b4f1", + MUZZLECOMBO_GLOCK_SAI_9X19_THREAD_PROTECTOR = "5a6b59a08dc32e000b452fb7", + MUZZLECOMBO_HK_MP5_3LUG_THREAD_PROTECTOR = "5926e16e86f7742f5a0f7ecb", + MUZZLECOMBO_HK_MP5_NAVY_STYLE_3LUG_SUPPRESSOR_ADAPTER = "5c0000c00db834001a6697fc", + MUZZLECOMBO_HK_USP_TACTICAL_THREAD_PROTECTOR = "6194f1f918a3974e5e7421e4", + MUZZLECOMBO_KRISS_VECTOR_45_ACP_THREAD_PROTECTION_CAP = "5fb6548dd1409e5ca04b54f9", + MUZZLECOMBO_KRISS_VECTOR_9X19_THREAD_PROTECTION_CAP = "5fbbc34106bde7524f03cbe9", + MUZZLECOMBO_LANTAC_BMD_BLAST_MITIGATION_DEVICE_A3_DIRECT_THREAD_ADAPTER = "5cf78496d7f00c065703d6ca", + MUZZLECOMBO_M700_THREAD_PROTECTION_CAP = "5d270b3c8abbc3105335cfb8", + MUZZLECOMBO_M700_THREAD_PROTECTION_CAP_STAINLESS_STEEL = "5d270ca28abbc31ee25ee821", + MUZZLECOMBO_M9A3_THREAD_PROTECTION_CAP = "5cadc390ae921500126a77f1", + MUZZLECOMBO_ME_CYLINDER_12GA_MUZZLE_ADAPTER = "5c0111ab0db834001966914d", + MUZZLECOMBO_MOSIN_RIFLE_KIBA_ARMS_762X54R_CUSTOM_THREAD_ADAPTER = "5cf79389d7f00c10941a0c4d", + MUZZLECOMBO_MOSIN_RIFLE_TIGER_ROCK_762X51_THREAD_ADAPTER = "5cf79599d7f00c10875d9212", + MUZZLECOMBO_MOSIN_RIFLE_WEAPON_TUNING_762X39_THREAD_ADAPTER = "5cf67a1bd7f00c06585fb6f3", + MUZZLECOMBO_MP9_9X19_SOUND_SUPPRESSOR_MOUNT = "5de8f237bbaf010b10528a70", + MUZZLECOMBO_MTS25512_12GA_CHOKE = "619d36da53b4d42ee724fae4", + MUZZLECOMBO_P226_THREAD_PROTECTION_CAP = "587de5ba2459771c0f1e8a58", + MUZZLECOMBO_PP9101_KEDRB_THREADED_SUPPRESSOR_ADAPTER = "57f3c7e024597738ea4ba286", + MUZZLECOMBO_REMINGTON_TACTICAL_CHOKE_12GA = "560838c94bdc2d77798b4569", + MUZZLECOMBO_RFB_THREAD_PROTECTION_CAP = "5f2aa4464b50c14bcf07acdb", + MUZZLECOMBO_RFB_THREAD_SPACER = "5f2aa43ba9b91d26f20ae6d2", + MUZZLECOMBO_RPD_BARREL_THREAD_PROTECTOR = "6513f0f5e63f29908d0ffab8", + MUZZLECOMBO_SIG_SAUER_TAPERLOK_762X51300_BLK_MUZZLE_ADAPTER = "5fbc22ccf24b94483f726483", + MUZZLECOMBO_SILENCERCO_HYBRID_46_DIRECT_THREAD_MOUNT_ADAPTER = "59bffc1f86f77435b128b872", + MUZZLECOMBO_SILENCERCO_OMEGA_45K_DIRECT_THREAD_MOUNT_ADAPTER = "5fc4b992187fea44d52edaa9", + MUZZLECOMBO_SILENCERCO_OMEGA_45K_PISTON_MOUNT_ADAPTER = "5fc4b97bab884124df0cd5e3", + MUZZLECOMBO_SILENCERCO_SALVO_12_CHOKE_ADAPTER = "5b363dea5acfc4771e1c5e7e", + MUZZLECOMBO_SILENCERCO_SALVO_12_THREAD_ADAPTER = "5b363e1b5acfc4771e1c5e80", + MUZZLECOMBO_SKS_WEAPON_TUNING_762X39_THREAD_ADAPTER = "5cf67cadd7f00c065a5abab7", + MUZZLECOMBO_SOK12_THREAD_PROTECTION_TUBE = "576167ab2459773cad038c43", + MUZZLECOMBO_SR2M_9X21_HAND_STOPPER = "62e2a754b6c0ee2f230cee0f", + MUZZLECOMBO_STEYR_AUG_RAT_WORX_556X45_MUZZLE_DEVICE_ADAPTER = "630f27f04f3f6281050b94d7", + MUZZLECOMBO_SVDS_ROTOR_43_THREAD_ADAPTER = "5e01e9e273d8eb11426f5bc3", + MUZZLECOMBO_TROMIX_MONSTER_CLAW_12GA_MUZZLE_BRAKE = "59fb137a86f7740adb646af1", + MUZZLECOMBO_VPO215_GORNOSTAY_THREAD_PROTECTION_CAP = "5de6556a205ddc616a6bc4f7", + NIGHTVISION_ANPVS14_NIGHT_VISION_MONOCULAR = "57235b6f24597759bf5a30f1", + NIGHTVISION_ARMASIGHT_N15_NIGHT_VISION_GOGGLES = "5c066e3a0db834001b7353f0", + NIGHTVISION_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", + NIGHTVISION_PNV10T_NIGHT_VISION_GOGGLES = "5c0696830db834001d23f5da", + OPTICSCOPE_BELOMO_PSO1M21_4X24_SCOPE = "576fd4ec2459777f0b518431", + OPTICSCOPE_BELOMO_PSO1M2_4X24_SCOPE = "5c82343a2e221644f31c0611", + OPTICSCOPE_BELOMO_PSO1_4X24_SCOPE = "5c82342f2e221644f31c060e", + OPTICSCOPE_BURRIS_FULLFIELD_TAC30_14X24_30MM_RIFLESCOPE = "5b2388675acfc4771e1be0be", + OPTICSCOPE_EOTECH_VUDU_16X24_30MM_RIFLESCOPE = "5b3b99475acfc432ff4dcbee", + OPTICSCOPE_HENSOLDT_FF_416X56_34MM_RIFLESCOPE = "56ea70acd2720b844b8b4594", + OPTICSCOPE_KMZ_1P59_310X_RIFLESCOPE = "5d0a3a58d7ad1a669c15ca14", + OPTICSCOPE_KMZ_1P69_310X_RIFLESCOPE = "5d0a3e8cd7ad1a6f6a3d35bd", + OPTICSCOPE_LEUPOLD_MARK_4_LR_6520X50_30MM_RIFLESCOPE = "5a37cb10c4a282329a73b4e7", + OPTICSCOPE_MARCH_TACTICAL_324X42_FFP_30MM_RIFLESCOPE = "57c5ac0824597754771e88a9", + OPTICSCOPE_NCSTAR_ADO_P4_SNIPER_39X42_RIFLESCOPE = "5dfe6104585a0c3e995c7b82", + OPTICSCOPE_NIGHTFORCE_ATACR_735X56_34MM_RIFLESCOPE = "5aa66be6e5b5b0214e506e97", + OPTICSCOPE_NIGHTFORCE_NXS_2510X24_SCOPE = "544a3d0a4bdc2d1b388b4567", + OPTICSCOPE_NPZ_1P781_28X_SCOPE = "618a75f0bd321d49084cd399", + OPTICSCOPE_NPZ_USP1_TYULPAN_4X_SCOPE = "5cf638cbd7f00c06595bc936", + OPTICSCOPE_PAG17_SCOPE = "5d53f4b7a4b936793d58c780", + OPTICSCOPE_PU_35X_RIFLESCOPE = "5b3f7c1c5acfc40dc5296b1d", + OPTICSCOPE_SCHMIDT_BENDER_PM_II_18X24_30MM_RIFLESCOPE = "617151c1d92c473c770214ab", + OPTICSCOPE_SCHMIDT_BENDER_PM_II_312X50_34MM_RIFLESCOPE = "61714eec290d254f5e6b2ffc", + OPTICSCOPE_SCHMIDT_BENDER_PM_II_525X56_34MM_RIFLESCOPE = "62850c28da09541f43158cca", + OPTICSCOPE_SIG_TANGO6T_16X24_30MM_RIFLESCOPE = "6567e7681265c8a131069b0f", + OPTICSCOPE_VOMZ_PILAD_4X32_254MM_RIFLESCOPE = "5dff772da3651922b360bf91", + OPTICSCOPE_VORTEX_RAZOR_HD_GEN2_16X24_30MM_RIFLESCOPE = "618ba27d9008e4636a67f61d", + PISTOLGRIP_9A91_PISTOL_GRIP = "6450f21a3d52156624001fcf", + PISTOLGRIP_AK12_PISTOL_GRIP = "5beec8ea0db834001a6f9dbf", + PISTOLGRIP_AKM_BAKELITE_PISTOL_GRIP = "59e62cc886f77440d40b52a1", + PISTOLGRIP_AKM_WOODEN_PISTOL_GRIP = "5a0071d486f77404e23a12b2", + PISTOLGRIP_AK_AEROKNOX_SCORPIUS_PISTOL_GRIP = "5f6341043ada5942720e2dc5", + PISTOLGRIP_AK_BAKELITE_PISTOL_GRIP = "59e6318286f77444dd62c4cc", + PISTOLGRIP_AK_BAKELITE_PISTOL_GRIP_6P1_SB8V = "5649ad3f4bdc2df8348b4585", + PISTOLGRIP_AK_BAKELITE_PISTOL_GRIP_6P4_SB9 = "57e3dba62459770f0c32322b", + PISTOLGRIP_AK_CG101_ARTYPE_PISTOL_GRIP_ADAPTER = "648ae3e356c6310a830fc291", + PISTOLGRIP_AK_CUSTOM_ARMS_AGS74_PRO_SNIPER_KIT_PISTOL_GRIP = "6087e663132d4d12c81fd96b", + PISTOLGRIP_AK_FAB_DEFENSE_AGR47_PISTOL_GRIP = "623c3be0484b5003161840dc", + PISTOLGRIP_AK_KGB_MG47_PISTOL_GRIP = "5cf54404d7f00c108840b2ef", + PISTOLGRIP_AK_KGB_MG47_PISTOL_GRIP_ANODIZED_RED = "5e2192a498a36665e8337386", + PISTOLGRIP_AK_MAGPUL_MOE_PISTOL_GRIP_BLACK = "5b30ac585acfc433000eb79c", + PISTOLGRIP_AK_MISSION_FIRST_TACTICAL_ENGAGE_AK47_PISTOL_GRIP = "63f4da90f31d4a33b87bd054", + PISTOLGRIP_AK_POLYMER_PISTOL_GRIP_6P1_SB8 = "5649ade84bdc2d1b2b8b4587", + PISTOLGRIP_AK_PUFGUN_SGM2_PISTOL_GRIP = "651580dc71a4f10aec4b6056", + PISTOLGRIP_AK_STRIKE_INDUSTRIES_ENHANCED_PISTOL_GRIP_BLACK = "5cf50850d7f00c056e24104c", + PISTOLGRIP_AK_STRIKE_INDUSTRIES_ENHANCED_PISTOL_GRIP_FDE = "5cf508bfd7f00c056e24104e", + PISTOLGRIP_AK_TANGODOWN_BATTLE_GRIP_PISTOL_GRIP = "628a664bccaab13006640e47", + PISTOLGRIP_AK_TANGODOWN_BATTLE_GRIP_PISTOL_GRIP_FDE = "628c9ab845c59e5b80768a81", + PISTOLGRIP_AK_TAPCO_SAWSTYLE_PISTOL_GRIP_BLACK = "5947f92f86f77427344a76b1", + PISTOLGRIP_AK_TAPCO_SAWSTYLE_PISTOL_GRIP_FDE = "5947fa2486f77425b47c1a9b", + PISTOLGRIP_AK_US_PALM_PISTOL_GRIP = "5c6bf4aa2e2216001219b0ae", + PISTOLGRIP_AK_ZENIT_RK3_PISTOL_GRIP = "5649ae4a4bdc2d1b2b8b4588", + PISTOLGRIP_APS_BAKELITE_SIDEPIECES = "5a17fc70fcdbcb0176308b3d", + PISTOLGRIP_AR15_AEROKNOX_ORION_PISTOL_GRIP = "63f5feead259b42f0b4d6d0f", + PISTOLGRIP_AR15_COLT_A2_PISTOL_GRIP = "55d4b9964bdc2d1d4e8b456e", + PISTOLGRIP_AR15_DAMAGE_INDUSTRIES_ECS_PISTOL_GRIP_FDE = "571659bb2459771fb2755a12", + PISTOLGRIP_AR15_DLG_TACTICAL_DLG123_PISTOL_GRIP = "602e71bd53a60014f9705bfa", + PISTOLGRIP_AR15_F1_FIREARMS_SKELETONIZED_STYLE_1_PISTOL_GRIP = "6113c3586c780c1e710c90bc", + PISTOLGRIP_AR15_F1_FIREARMS_SKELETONIZED_STYLE_2_PC_PISTOL_GRIP = "6113cc78d3a39d50044c065a", + PISTOLGRIP_AR15_F1_FIREARMS_SKELETONIZED_STYLE_2_PISTOL_GRIP = "6113cce3d92c473c770200c7", + PISTOLGRIP_AR15_HERA_ARMS_HG15_PISTOL_GRIP = "5cc9bcaed7f00c011c04e179", + PISTOLGRIP_AR15_HK_BATTLE_GRIP_BEAVERTAIL_PISTOL_GRIP = "5bb20e0ed4351e3bac1212dc", + PISTOLGRIP_AR15_HK_BATTLE_GRIP_BEAVERTAIL_PISTOL_GRIP_RAL_8000 = "6193dcd0f8ee7e52e4210a28", + PISTOLGRIP_AR15_HK_BATTLE_GRIP_PISTOL_GRIP = "5bb20e18d4351e00320205d5", + PISTOLGRIP_AR15_HK_ERGO_PSG1_STYLE_PISTOL_GRIP = "5d025cc1d7ad1a53845279ef", + PISTOLGRIP_AR15_HK_V2_PISTOL_GRIP = "5c6d7b3d2e221600114c9b7d", + PISTOLGRIP_AR15_MAGPUL_MIAD_PISTOL_GRIP_FDE = "5a339805c4a2826c6e06d73d", + PISTOLGRIP_AR15_MAGPUL_MOE_PISTOL_GRIP_BLACK = "55802f5d4bdc2dac148b458f", + PISTOLGRIP_AR15_MAGPUL_MOE_PISTOL_GRIP_FDE = "5d15cf3bd7ad1a67e71518b2", + PISTOLGRIP_AR15_NAROH_ARMS_GRALS_PISTOL_GRIP = "59db3a1d86f77429e05b4e92", + PISTOLGRIP_AR15_SIG_M400_REDUCED_ANGLE_PISTOL_GRIP_COYOTE_TAN = "652911675ae2ae97b80fdf3c", + PISTOLGRIP_AR15_STARK_AR_RIFLE_GRIP_BLACK = "59db3acc86f7742a2c4ab912", + PISTOLGRIP_AR15_STARK_AR_RIFLE_GRIP_FDE = "59db3b0886f77429d72fb895", + PISTOLGRIP_AR15_TACTICAL_DYNAMICS_HEXGRIP_PISTOL_GRIP = "615d8faecabb9b7ad90f4d5d", + PISTOLGRIP_AR15_TACTICAL_DYNAMICS_SKELETONIZED_PISTOL_GRIP = "5b07db875acfc40dc528a5f6", + PISTOLGRIP_AS_VAL_PISTOL_GRIP = "57c44fa82459772d2d75e415", + PISTOLGRIP_AS_VAL_ROTOR_43_PISTOL_GRIP_BUFFER_TUBE = "5a69a2ed8dc32e000d46d1f1", + PISTOLGRIP_BENELLI_M3_TELESCOPIC_STOCK_PISTOL_GRIP = "6259c3d8012d6678ec38eeb8", + PISTOLGRIP_CHIAPPA_RHINO_PLASTIC_PISTOL_GRIP = "619f4ab2d25cbd424731fb95", + PISTOLGRIP_CHIAPPA_RHINO_WOODEN_PISTOL_GRIP = "619f4bffd25cbd424731fb97", + PISTOLGRIP_GLOCK_PACHMAYR_TACTICAL_GRIP_GLOVE = "5a7b4960e899ef197b331a2d", + PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_BLACK = "57c55efc2459772d2c6271e7", + PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_FDE = "57af48872459771f0b2ebf11", + PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_GHILLIE_EARTH = "57c55f092459772d291a8463", + PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_GHILLIE_GREEN = "57c55f112459772d28133310", + PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_OLIVE_DRAB = "57c55f172459772d27602381", + PISTOLGRIP_KS23M_PISTOL_GRIP = "5e848d99865c0f329958c83b", + PISTOLGRIP_M14_SAGE_INTERNATIONAL_M14ALCS_MOD0_PISTOL_GRIP = "5addc7db5acfc4001669f279", + PISTOLGRIP_M1911A1_SIDE_GRIPS = "5e81c6bf763d9f754677beff", + PISTOLGRIP_M1911_KIBA_ARMS_GENEBURN_CUSTOM_SIDE_GRIPS = "626a9cb151cb5849f6002890", + PISTOLGRIP_M1911_PACHMAYR_AMERICAN_LEGEND_GRIP_423 = "5ef366938cef260c0642acad", + PISTOLGRIP_M45A1_MILTAC_GVT_G10_SIDE_GRIPS = "5f3e778efcd9b651187d7201", + PISTOLGRIP_M700_MAGPUL_PRO_700_PISTOL_GRIP = "5cdeac5cd7f00c000f261694", + PISTOLGRIP_M870_FAB_DEFENSE_AGR870_PISTOL_GRIP = "5bfe86a20db834001d23e8f7", + PISTOLGRIP_M9A3_POLYMER_SIDE_GRIPS = "5cadc431ae921500113bb8d5", + PISTOLGRIP_MCX_PISTOL_GRIP = "5fbcbd6c187fea44d52eda14", + PISTOLGRIP_MDR_PISTOL_GRIP_BLACK = "5dcbd6dddbd3d91b3e5468de", + PISTOLGRIP_MDR_PISTOL_GRIP_FDE = "5c48a2c22e221602b313fb6c", + PISTOLGRIP_MOSIN_RIFLE_TACFIRE_PISTOL_GRIP = "5bbde41ed4351e003562b038", + PISTOLGRIP_MP155_ULTIMA_PISTOL_GRIP = "606eef46232e5a31c233d500", + PISTOLGRIP_MP443_GRACH_POLYMER_PISTOL_GRIP = "576a63cd2459771e796e0e11", + PISTOLGRIP_MPX_PISTOL_GRIP = "5894a51286f77426d13baf02", + PISTOLGRIP_ORSIS_T5000M_PISTOL_GRIP = "5df38a5fb74cd90030650cb6", + PISTOLGRIP_P226_AXELSON_TACTICAL_MK25_PISTOL_GRIP = "5bffec120db834001c38f5fa", + PISTOLGRIP_P226_COMBAT_PISTOL_GRIP_FDE = "57c9a89124597704ee6faec1", + PISTOLGRIP_P226_EMPEROR_SCORPION_PISTOL_GRIP = "5c0006470db834001a6697fe", + PISTOLGRIP_P226_HOGUE_G10_CHAIN_LINK_PISTOL_GRIP = "5bffef760db8340019668fe4", + PISTOLGRIP_P226_HOGUE_RUBBERIZED_PISTOL_GRIP = "5b39ffbd5acfc47a8773fb06", + PISTOLGRIP_P226_POLYMER_PISTOL_GRIP_BLACK = "56d5a2bbd2720bb8418b456a", + PISTOLGRIP_P226_STAINLESS_ELITE_WOODEN_PISTOL_GRIP = "5c00076d0db834001d23ee1f", + PISTOLGRIP_PB_BAKELITE_SIDE_GRIPS = "56e05a6ed2720bd0748b4567", + PISTOLGRIP_PK_PISTOL_GRIP = "646371779f5f0ea59a04c204", + PISTOLGRIP_PK_PISTOL_GRIP_BLACK = "64cbad529f7cf7f75c077fd5", + PISTOLGRIP_PM_BAKELITE_SIDE_GRIPS = "6374a7e7417239a7bf00f042", + PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP = "637784c5f7b3f4ac1a0d1a9a", + PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP_OLIVE_DRAB = "648afce7ec6bb25b2608defb", + PISTOLGRIP_PM_TACTIC_KIT_PISTOL_GRIP = "637b6d610aef6cfc5e02dd14", + PISTOLGRIP_PP1901_VITYAZ_PISTOL_GRIP = "5998517986f7746017232f7e", + PISTOLGRIP_PP91_KEDR_POLYMER_PISTOL_GRIP = "57d152ec245977144076ccdf", + PISTOLGRIP_RPD_WOODEN_PISTOL_GRIP = "6513f13a8cb24472490ee32f", + PISTOLGRIP_RSH12_PISTOL_GRIP = "633ec8e4025b096d320a3b1e", + PISTOLGRIP_SA58_FAB_DEFENSE_AGFAL_PISTOL_GRIP = "5b7d679f5acfc4001a5c4024", + PISTOLGRIP_SA58_PISTOL_GRIP = "5b7d678a5acfc4001a5c4022", + PISTOLGRIP_SA58_SAWSTYLE_PISTOL_GRIP_BLACK = "5b099b965acfc400186331e6", + PISTOLGRIP_SKSVZ58_FAB_DEFENSE_AG58_PISTOL_GRIP = "5d023784d7ad1a049d4aa7f2", + PISTOLGRIP_SKS_TAPCO_INTRAFUSE_SAWSTYLE_PISTOL_GRIP = "5afd7e445acfc4001637e35a", + PISTOLGRIP_SR2M_PISTOL_GRIP = "637b9c37b7e3bc41b21ce71a", + PISTOLGRIP_SR2M_PISTOL_GRIP_BLACK = "637ba29bf7ca6372bf2613db", + PISTOLGRIP_SVDS_LYNX_ARMS_AKSERIES_PISTOL_GRIP_ADAPTER = "6516b129609aaf354b34b3a8", + PISTOLGRIP_SVDS_PISTOL_GRIP = "5c471be12e221602b66cd9ac", + PISTOLGRIP_TOZ106_002_PISTOL_GRIP = "5a38eecdc4a282329a73b512", + PISTOLGRIP_TT_HOGUELIKE_RUBBER_GRIP = "5c0684e50db834002a12585a", + PISTOLGRIP_TT_ORNATED_SIDE_GRIPS = "5b3cadf35acfc400194776a0", + PISTOLGRIP_TT_PMLASER_TT206_SIDE_GRIPS_WITH_LASER_SIGHT = "5bffcf7a0db83400232fea79", + PISTOLGRIP_TT_RAZOR_ARMS_RUBBER_GRIP = "5c079ec50db834001966a706", + PISTOLGRIP_TT_SIDE_GRIPS = "571a282c2459771fb2755a69", + PISTOL_20X1MM_TOY_GUN = "66015072e9f84d5680039678", + PISTOL_APB_9X18PM_SILENCED_MACHINE = "5abccb7dd8ce87001773e277", + PISTOL_BERETTA_M9A3_9X19 = "5cadc190ae921500103bb3b6", + PISTOL_COLT_M1911A1_45_ACP = "5e81c3cbac2bb513793cdc75", + PISTOL_COLT_M45A1_45_ACP = "5f36a0e5fbf956000b716b65", + PISTOL_FN_FIVESEVEN_MK2_57X28 = "5d3eb3b0a4b93615055e84d2", + PISTOL_FN_FIVESEVEN_MK2_57X28_PISTOL_FDE = "5d67abc1a4b93614ec50137f", + PISTOL_GLOCK_17_9X19 = "5a7ae0c351dfba0017554310", + PISTOL_GLOCK_18C_9X19_MACHINE = "5b1fa9b25acfc40018633c01", + PISTOL_GLOCK_19X_9X19 = "63088377b5cd696784087147", + PISTOL_HK_USP_45_ACP = "6193a720f8ee7e52e42109ed", + PISTOL_LEBEDEV_PL15_9X19 = "602a9740da11d6478d5a06dc", + PISTOL_MAKAROV_PM_9X18PM = "5448bd6b4bdc2dfc2f8b4569", + PISTOL_MAKAROV_PM_T_9X18PM = "579204f224597773d619e051", + PISTOL_PB_9X18PM_SILENCED = "56e0598dd2720bb5668b45a6", + PISTOL_SERDYUKOV_SR1MP_GYURZA_9X21 = "59f98b4986f7746f546d2cef", + PISTOL_SIG_P226R_9X19 = "56d59856d2720bd8418b456a", + PISTOL_STECHKIN_APS_9X18PM_MACHINE = "5a17f98cfcdbcb0980087290", + PISTOL_TT33_762X25_TT = "571a12c42459771f627b58a0", + PISTOL_TT33_762X25_TT_PISTOL_GOLDEN = "5b3b713c5acfc4330140bd8d", + PISTOL_YARYGIN_MP443_GRACH_9X19 = "576a581d2459771e7b1bc4f1", + POCKETS_1X3 = "60c7272c204bc17802313365", + POCKETS_1X4 = "557ffd194bdc2d28148b457f", + POCKETS_1X4_SPECIAL = "627a4e6b255f7527fb05a0f6", + POCKETS_1X4_TUE = "65e080be269cbd5c5005e529", + POCKETS_2X3 = "64cbd95a29b9b4283e216ff5", + POCKETS_LARGE = "5af99e9186f7747c447120b8", + QUEST_ACCOUNTANTS_JOURNAL = "638cbb0f7f97256fac16167a", + QUEST_ACCOUNTANTS_NOTES = "63a943cead5cc12f22161ff7", + QUEST_AG_GUITAR_PICK = "638df4cc7b560b03794a18d2", + QUEST_ARENA_POSTER_BISON = "664a5775f3d3570fba06be64", + QUEST_ARENA_POSTER_EASY_MONEY = "664b69e8e1238e506d3630af", + QUEST_ARENA_POSTER_KILLA = "664b69c5a082271bc46c4e11", + QUEST_BANK_CASE = "590dde5786f77405e71908b2", + QUEST_BLOOD_SAMPLE = "5a687e7886f7740c4a5133fb", + QUEST_BOTTLE_OF_LE_JEAN_WINE = "6582bd252b50c61c565828e2", + QUEST_CADASTRAL_REGISTRY_RECORDS = "657acb2ac900be5902191ac9", + QUEST_CARBON_CASE = "5910922b86f7747d96753483", + QUEST_CHEFS_DIARY = "64f69b4267e11a7c6206e010", + QUEST_CHEMCONT_SAMPLES = "63927b29c115f907b14700b9", + QUEST_CHEMICAL_CONTAINER_1 = "5b43237186f7742f3a4ab252", + QUEST_CHEMICAL_CONTAINER_2 = "5b4c81a086f77417d26be63f", + QUEST_CHEMICAL_CONTAINER_3 = "5b4c81bd86f77418a75ae159", + QUEST_CLOTHES_DESIGN_HANDBOOK_PART_1 = "5ae9a3f586f7740aab00e4e6", + QUEST_CLOTHES_DESIGN_HANDBOOK_PART_2 = "5ae9a4fc86f7746e381e1753", + QUEST_COMPROMISING_INFORMATION_ON_REF = "664fce7a90294949fe2d81cb", + QUEST_ENCRYPTED_MESSAGE = "5d3ec50586f774183a607442", + QUEST_FLASHDRIVE_CAR_SERVICE = "638cbb3ba63f1b49be6a300e", + QUEST_FLASHDRIVE_TERRAGROUP_EMPLOYEE = "5eff135be0d3331e9d282b7b", + QUEST_FLASHDRIVE_WATCHING_YOU = "638e9d5536b3b72c944e2fc7", + QUEST_FLASHDRIVE_WET_JOB_PT_4 = "5a29357286f77409c705e025", + QUEST_FLASH_DRIVE_WITH_FAKE_INFO = "5c12301c86f77419522ba7e4", + QUEST_FLYERS4 = "664b69f3a082271bc46c4e13", + QUEST_GOLDEN_ZIBBO_LIGHTER = "5939a00786f7742fe8132936", + QUEST_GOSHAN_CARGO_MANIFESTS = "5ae9a0dd86f7742e5f454a05", + QUEST_HARD_DRIVE = "661666458c2aa9cb1602503b", + QUEST_HARD_DRIVE_TERRAGROUP_SCIENTIST = "6575a6ca8778e96ded05a802", + QUEST_HDD_SURVEILLANCE = "638dfc803083a019d447768e", + QUEST_HDD_TOP_SECRET = "628393620d8524273e7eb028", + QUEST_HDD_WET_JOB = "5a29276886f77435ed1b117c", + QUEST_HOUSING_JOURNAL = "638e0057ab150a5f56238960", + QUEST_IDEA_CARGO_MANIFESTS = "5ae9a1b886f77404c8537c62", + QUEST_INFORMANT_JOURNAL = "63989ced706b793c7d60cfef", + QUEST_JOURNAL = "64f07f7726cfa02c506f8ac0", + QUEST_KEY_TO_THE_CLOSED_PREMISES_OF_THE_HEALTH_RESORT = "5a0448bc86f774736f14efa8", + QUEST_LETTER_GOT_MAIL = "638cbc68a63f1b49be6a3010", + QUEST_LETTER_HERMIT = "61904c9df62c89219a56e034", + QUEST_LETTER_POSTMAN_PAT = "591093bb86f7747caa7bb2ee", + QUEST_LETTER_TERRAGROUP = "5939e9b286f77462a709572c", + QUEST_LIGHTKEEPER_INTEL = "6398a072e301557ae24cec92", + QUEST_LIGHTKEEPER_INTEL_2 = "638e0752ab150a5f56238962", + QUEST_LIGHTKEEPER_INTEL_2_FORGED = "638e06c4b8bac37a110ed56d", + QUEST_LIGHTKEEPER_INTEL_FORGED = "6398a0861c712b1e1d4dadf1", + QUEST_MARKED_OPHTHALMOSCOPE = "5efdaf6de6a30218ed211a48", + QUEST_MBT_INTEGRATED_NAVIGATION_SYSTEM = "60c080eb991ac167ad1c3ad4", + QUEST_MEDICAL_RECORD = "6393262086e646067c176aa2", + QUEST_MEDICAL_RECORD_1 = "608c22a003292f4ba43f8a1a", + QUEST_MEDICAL_RECORD_2 = "60a3b5b05f84d429b732e934", + QUEST_MILITARY_DOCUMENTS_1 = "60915994c49cf53e4772cc38", + QUEST_MILITARY_DOCUMENTS_2 = "60a3b6359c427533db36cf84", + QUEST_MILITARY_DOCUMENTS_3 = "60a3b65c27adf161da7b6e14", + QUEST_MOTOR_CONTROLLER_1 = "5af04c0b86f774138708f78e", + QUEST_MOTOR_CONTROLLER_2 = "5b4c72b386f7745b453af9c0", + QUEST_MOTOR_CONTROLLER_3 = "5b4c72c686f77462ac37e907", + QUEST_NOTE_FOR_THERAPIST = "5ae9a34d86f7740aab00e4de", + QUEST_OLI_CARGO_MANIFESTS = "5ae9a18586f7746e381e16a3", + QUEST_OLI_CARGO_ROUTE_DOCUMENTS = "5ae9a25386f7746dd946e6d9", + QUEST_PACKAGE_OF_GRAPHICS_CARDS = "5ac620eb86f7743a8e6e0da0", + QUEST_PARAMEDICS_GPHONE_X = "64f09c02b63b74469b6c149f", + QUEST_PHOTO_ALBUM = "5d357d6b86f7745b606e3508", + QUEST_PICTURE_1 = "64e73909cd54ef0580746af3", + QUEST_PICTURE_10 = "64e74a534d49d23b2c39d31b", + QUEST_PICTURE_11 = "64e74a5ac2b4f829615ec336", + QUEST_PICTURE_12 = "64e74a64aac4cd0a7264ecdf", + QUEST_PICTURE_2 = "64e74a186393886f74114a96", + QUEST_PICTURE_3 = "64e74a1faac4cd0a7264ecd9", + QUEST_PICTURE_4 = "64e74a274d49d23b2c39d317", + QUEST_PICTURE_5 = "64e74a2fc2b4f829615ec332", + QUEST_PICTURE_6 = "64e74a35aac4cd0a7264ecdb", + QUEST_PICTURE_7 = "64e74a3d4d49d23b2c39d319", + QUEST_PICTURE_8 = "64e74a44c2b4f829615ec334", + QUEST_PICTURE_9 = "64e74a4baac4cd0a7264ecdd", + QUEST_PUMPING_STATION_OPERATION_REPORT = "619268ad78f4fa33f173dbe5", + QUEST_RADIO_TRANSMITTER_BODY = "6399f54b0a36db13c823ad21", + QUEST_SECRET_COMPONENT = "64f5b4f71a5f313cb144c06c", + QUEST_SECURED_TAPE = "6398a4cfb5992f573c6562b3", + QUEST_SECURE_FLASH_DRIVE = "59f9ddae86f77407ab46e047", + QUEST_SECURE_FLASH_DRIVE_V3 = "6331bb0d1aa9f42b804997a6", + QUEST_SECURE_FOLDER_0013 = "5939e5a786f77461f11c0098", + QUEST_SECURE_FOLDER_0022 = "591092ef86f7747bb8703422", + QUEST_SECURE_FOLDER_0031 = "5938188786f77474f723e87f", + QUEST_SECURE_FOLDER_0048 = "593965cf86f774087a77e1b6", + QUEST_SECURE_FOLDER_0052 = "5938878586f7741b797c562f", + QUEST_SECURE_FOLDER_0060 = "5a6860d886f77411cd3a9e47", + QUEST_SINGLEAXIS_FIBER_OPTIC_GYROSCOPE_1 = "5af04e0a86f7743a532b79e2", + QUEST_SINGLEAXIS_FIBER_OPTIC_GYROSCOPE_2 = "5b4c72fb86f7745cef1cffc5", + QUEST_SKIER_AND_PEACEKEEPER_CORRESPONDENCE = "6614238e0d240a5f5d0f679d", + QUEST_SLIDERKEY_SECURE_FLASH_DRIVE = "590c62a386f77412b0130255", + QUEST_STOLEN_MILITARY_DOCUMENTS = "61a00bcb177fb945751bbe6a", + QUEST_SURGERY_KIT_MARKED_WITH_A_BLUE_SYMBOL = "5efdafc1e70b5e33f86de058", + QUEST_SYRINGE_WITH_A_CHEMICAL = "593a87af86f774122f54a951", + QUEST_T90M_COMMANDER_CONTROL_PANEL = "609267a2bb3f46069c3e6c7d", + QUEST_TOUGHBOOK_CARGO = "5a29284f86f77463ef3db363", + QUEST_TOUGHBOOK_SEASIDE_VACATION = "619252352be33f26043400a7", + QUEST_UAV_SAS_DISK_1 = "5a294d7c86f7740651337cf9", + QUEST_UAV_SAS_DISK_2 = "5a294d8486f774068638cd93", + QUEST_UNHEARD_LAPTOP = "661421c7c1f2f548c50ee649", + QUEST_UNHEARD_LAPTOP_2 = "661423200d240a5f5d0f679b", + QUEST_UNHEARD_PHONE = "6614217b6d9d5abcad0ff098", + QUEST_UNHEARD_PHONE_2 = "6614230055afee107f05e998", + QUEST_WATCH_BRONZE = "5937fd0086f7742bf33fc198", + QUEST_WATCH_GOLD = "590de92486f77423d9312a33", + QUEST_WATCH_SILVER = "5937fc6786f7742cab753590", + QUEST_WATER_PUMP_OPERATION_DATA = "619268de2be33f2604340159", + RADIOTRANSMITTER_DIGITAL_SECURE_DSP_RADIO_TRANSMITTER = "62e910aaf957f2915e0a5e36", + RANDOMLOOTCONTAINER_ARENA_GEARCRATE_BLUE_OPEN = "665730fa4de4820934746c48", + RANDOMLOOTCONTAINER_ARENA_GEARCRATE_GREEN_OPEN = "6658876e146af22739040fad", + RANDOMLOOTCONTAINER_ARENA_GEARCRATE_VIOLET_OPEN = "6658291eefd94e2d665b14a4", + RANDOMLOOTCONTAINER_ARENA_JEWELRYCRATE_BLUE_OPEN = "66573310a1657263d816a139", + RANDOMLOOTCONTAINER_ARENA_JEWELRYCRATE_GREEN_OPEN = "665886abdaadd1069736c539", + RANDOMLOOTCONTAINER_ARENA_JEWELRYCRATE_VIOLET_OPEN = "665829a6efd94e2d665b14a8", + RANDOMLOOTCONTAINER_ARENA_JUNKCRATE_BLUE_OPEN = "665732f4464c4b4ba4670fa9", + RANDOMLOOTCONTAINER_ARENA_JUNKCRATE_GREEN_OPEN = "6658892e6e007c6f33662002", + RANDOMLOOTCONTAINER_ARENA_JUNKCRATE_VIOLET_OPEN = "66582972ac60f009f270d2aa", + RANDOMLOOTCONTAINER_ARENA_WEAPONCRATE_BLUE_OPEN = "665732e7ac60f009f270d1ef", + RANDOMLOOTCONTAINER_ARENA_WEAPONCRATE_GREEN_OPEN = "665888282c4a1b73af576b77", + RANDOMLOOTCONTAINER_ARENA_WEAPONCRATE_VIOLET_OPEN = "665829424de4820934746ce6", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_01 = "64897ffc3656831810043165", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_02 = "64898e9db18e646e992aba47", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_03 = "648990314b4d2b31b63a46fc", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_04 = "648996987063b903ff4b8561", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_05 = "6489981f7063b903ff4b8565", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_06 = "64899a35fc093676bb0f57e3", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_07 = "64899ec0a236de328b12db52", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_08 = "64899f4189de40533661a0c0", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_09 = "6489a0a4fc493c59d15fec05", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_10 = "6489a233a236de328b12db56", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_11 = "6489a344fc493c59d15fec0f", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_12 = "6489a7d87063b903ff4b85cc", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_13 = "6489a97645f9ca4ba51c4dd0", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_14 = "6489aa584b6fc03d00374e59", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_15 = "6489ab9645f9ca4ba51c4dd7", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_16 = "6489b2b131a2135f0d7d0fcb", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_17 = "6489b73cebac5a4a1b73cab7", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_18 = "6489b88bcf0cd80b7e749069", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_19 = "6489b91dd0c36c0a4925c4b4", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_20 = "6489b99eebac5a4a1b73cabc", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_21 = "6489ba157c07471efa3e03b4", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_22 = "6489ba92a74e43447b64d5e2", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_23 = "6489bbd6d0c36c0a4925c4b8", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_24 = "6489bd7b79295b4f753d486a", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_25 = "6489bed4a53c8c047c3dc361", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_26 = "6489bfa844d98e01bc4c420e", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_27 = "6489c03c8bc5233fdc78e788", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_28 = "6489c0508bc5233fdc78e78c", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_29 = "6489c0df7c07471efa3e03b8", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_30 = "6489c0f731a2135f0d7d0fd5", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_31 = "6489c12f8bc5233fdc78e790", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_32 = "6489c164a53c8c047c3dc365", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_33 = "6489c200cf0cd80b7e74906d", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_34 = "6489c2aad0c36c0a4925c4bc", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_35 = "6489c30331a2135f0d7d0fd9", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_36 = "6489c46eebac5a4a1b73cac0", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_37 = "6489c5cb44d98e01bc4c4212", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_38 = "6489c65cd0c36c0a4925c4c0", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_39 = "6489c753a74e43447b64d5e6", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_40 = "6489c80e7c07471efa3e03bc", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_41 = "6489c8a1a53c8c047c3dc369", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_42 = "6489c8dba53c8c047c3dc36d", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_43 = "6489c99f7c07471efa3e03c0", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_44 = "6489ca66d0c36c0a4925c4c4", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_45 = "6489cad98bc5233fdc78e794", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_46 = "6489cb4fa74e43447b64d5ea", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_47 = "6489cc4379295b4f753d486e", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_48 = "6489cca131a2135f0d7d0fdd", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_49 = "6489d812cf0cd80b7e749071", + RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_50 = "6489d89debac5a4a1b73caf7", + RANDOMLOOTCONTAINER_NEW_YEAR_GIFT_BIG = "63a897c6b1ff6e29734fcc95", + RANDOMLOOTCONTAINER_NEW_YEAR_GIFT_MEDIUM = "63a898a328e385334e0640a5", + RANDOMLOOTCONTAINER_NEW_YEAR_GIFT_SMALL = "63a8970d7108f713591149f5", + RANDOMLOOTCONTAINER_PUMPKIN_RAND_LOOT_CONTAINER = "634959225289190e5e773b3b", + RANDOMLOOTCONTAINER_RANDOM_LOOT_CONTAINER = "62f10b79e7ee985f386b2f47", + RANDOMLOOTCONTAINER_RANDOM_LOOT_QUEST_CONTAINER = "633ffb5d419dbf4bea7004c6", + RANGEFINDER_VORTEX_RANGER_1500 = "61605e13ffa6e502ac5e7eef", + RECEIVER_AI_AXMC_338_LM_CHASSIS = "6281204f308cb521f87a8f9b", + RECEIVER_AI_AXMC_UPPER = "62811fbf09427b40ab14e767", + RECEIVER_AK12_DUST_COVER = "649ec2f3961514b22506b111", + RECEIVER_AK545_SAG_RAILED_DUST_COVER = "628b9be6cff66b70c002b14c", + RECEIVER_AK74M_DUST_COVER_6P34_01 = "5ac50da15acfc4001718d287", + RECEIVER_AK74_DUST_COVER_6P20_01 = "5649af094bdc2df8348b4586", + RECEIVER_AKM_DUST_COVER_6P1_01 = "59d6507c86f7741b846413a2", + RECEIVER_AKS74UB_DUST_COVER = "5839a7742459773cf9693481", + RECEIVER_AKS74U_DUST_COVER_6P26_SB7 = "57dc334d245977597164366f", + RECEIVER_AKS74U_LEGAL_ARSENAL_PILIGRIM_RAILED_DUST_COVER = "655cb6b5d680a544f30607fa", + RECEIVER_AK_AKADEMIA_BASTION_DUST_COVER = "5d2c76ed48f03532f2136169", + RECEIVER_AK_FAB_DEFENSE_PDC_DUST_COVER = "5d2c770c48f0354b4a07c100", + RECEIVER_AK_TWS_DOG_LEG_RAIL_DUST_COVER = "5d2c772c48f0355d95672c25", + RECEIVER_AK_ZENIT_B33_DUST_COVER = "5649af884bdc2d1b2b8b4589", + RECEIVER_AR15_ADAR_215_556X45_UPPER = "5c0e2f26d174af02a9625114", + RECEIVER_AR15_AEROKNOX_AX15_556X45_UPPER = "63f5ed14534b2c3d5479a677", + RECEIVER_AR15_NOVESKE_GEN3_556X45_UPPER = "5c07a8770db8340023300450", + RECEIVER_AR15_VLTOR_MUR1S_556X45_UPPER = "59bfe68886f7746004266202", + RECEIVER_AS_VAL_DUST_COVER = "57c44f4f2459772d2c627113", + RECEIVER_FAL_STANDARD_DUST_COVER = "5b7d6c105acfc40015109a5f", + RECEIVER_FN_FIVESEVEN_MK2_PISTOL_SLIDE = "5d3eb44aa4b93650d64e4979", + RECEIVER_FN_P90_57X28_UPPER = "5cc70102e4a949035e43ba74", + RECEIVER_FN_P90_EFFEN_90_57X28_UPPER = "5cc700ede4a949033c734315", + RECEIVER_FN_PS90_57X28_UPPER = "5cf7acfcd7f00c1084477cf2", + RECEIVER_FN_SCARH_762X51_UPPER = "6165adcdd3a39d50044c120f", + RECEIVER_FN_SCARH_762X51_UPPER_RECEIVER_FDE = "6165aeedfaa1272e431521e3", + RECEIVER_FN_SCARL_556X45_UPPER = "618405198004cc50514c3594", + RECEIVER_FN_SCARL_556X45_UPPER_RECEIVER_FDE = "618426d96c780c1e710c9b9f", + RECEIVER_GLOCK_17_MOS_PISTOL_SLIDE = "615d8dbd290d254f5e6b2ed6", + RECEIVER_GLOCK_17_PISTOL_SLIDE = "5a6f5e048dc32e00094b97da", + RECEIVER_GLOCK_18C_PISTOL_SLIDE = "5b1faa0f5acfc40dc528aeb5", + RECEIVER_GLOCK_19X_PISTOL_SLIDE = "63075cc5962d0247b029dc2a", + RECEIVER_GLOCK_LONE_WOLF_ALPHAWOLF_CUSTOM_PISTOL_SLIDE = "5a7033908dc32e000a311392", + RECEIVER_GLOCK_LONE_WOLF_ALPHAWOLF_PISTOL_SLIDE = "5a702d198dc32e000b452fc3", + RECEIVER_GLOCK_MOTO_CUT_PISTOL_SLIDE = "5a9685b1a2750c0032157104", + RECEIVER_GLOCK_POLYMER80_PS9_PISTOL_SLIDE = "5a7afa25e899ef00135e31b0", + RECEIVER_GLOCK_VIPER_CUT_PISTOL_SLIDE = "5a6f5f078dc32e00094b97dd", + RECEIVER_GLOCK_ZEV_TECH_HEX_GEN3_RMR_PISTOL_SLIDE = "5a71e22f8dc32e00094b97f4", + RECEIVER_GLOCK_ZEV_TECH_HEX_SPARTAN_RMR_PISTOL_SLIDE = "5a71e4f48dc32e001207fb26", + RECEIVER_HK_416A5_556X45_UPPER = "5bb20d53d4351e4502010a69", + RECEIVER_HK_G28_762X51_UPPER = "61713a8fd92c473c770214a4", + RECEIVER_HK_MP5K_9X19_UPPER = "5d2f261548f03576f500e7b7", + RECEIVER_HK_MP5SD_9X19_UPPER = "5926f2e086f7745aae644231", + RECEIVER_HK_MP5_9X19_UPPER = "5926c0df86f77462f647f764", + RECEIVER_HK_USP_45_ACP_PISTOL_SLIDE = "6193d382ed0429009f543e65", + RECEIVER_HK_USP_ELITE_45_ACP_PISTOL_SLIDE = "6194f5d418a3974e5e7421ef", + RECEIVER_HK_USP_EXPERT_45_ACP_PISTOL_SLIDE = "6194f5722d2c397d6600348f", + RECEIVER_HK_USP_MATCH_45_ACP_PISTOL_SLIDE = "6194f5a318a3974e5e7421eb", + RECEIVER_HK_USP_TACTICAL_45_ACP_PISTOL_SLIDE = "6194f41f9fb0c665d5490e75", + RECEIVER_M1911A1_PISTOL_SLIDE = "5e81edc13397a21db957f6a1", + RECEIVER_M45A1_PISTOL_SLIDE = "5f3e7823ddc4f03b010e2045", + RECEIVER_M4A1_556X45_UPPER = "55d355e64bdc2d962f8b4569", + RECEIVER_M9A3_PISTOL_SLIDE = "5cadc55cae921500103bb3be", + RECEIVER_MCX_GEN1_300_BLK_UPPER = "5fbcc3e4d6fa9c00c571bb58", + RECEIVER_MCX_SPEAR_68X51_UPPER = "6529119424cbe3c74a05e5bb", + RECEIVER_MK18_338_LM_UPPER = "5fc278107283c4046c581489", + RECEIVER_MK47_RESOLUTE_762X39_UPPER = "606587a88900dc2d9a55b659", + RECEIVER_MOLOT_ARMS_AKMTYPE_DUST_COVER = "59e6449086f7746c9f75e822", + RECEIVER_MP9N_9X19_UPPER = "5de8e67c4a9f347bc92edbd7", + RECEIVER_MP9_9X19_UPPER = "5e0090f7e9dc277128008b93", + RECEIVER_MPX_GEN1_9X19_UPPER = "5894a5b586f77426d2590767", + RECEIVER_OPSKS_DUST_COVER = "634f06262e5def262d0b30ca", + RECEIVER_P226R_MK25_PISTOL_SLIDE = "56d5a407d2720bb3418b456b", + RECEIVER_P226_AXELSON_TACTICAL_MK25_PISTOL_SLIDE = "5bffe7c50db834001d23ece1", + RECEIVER_P226_EMPEROR_SCORPION_PISTOL_SLIDE = "5c010a700db834001d23ef5d", + RECEIVER_P226_LEGION_FULL_SIZE_PISTOL_SLIDE = "5c0125fc0db834001a669aa3", + RECEIVER_P226_STAINLESS_ELITE_PISTOL_SLIDE = "5c0009510db834001966907f", + RECEIVER_PL15_PISTOL_SLIDE = "60228924961b8d75ee233c32", + RECEIVER_PM_PISTOL_SLIDE = "6374a822e629013b9c0645c8", + RECEIVER_PP1901_VITYAZSN_DUST_COVER = "59985a6c86f77414ec448d17", + RECEIVER_PP1901_VITYAZ_DUST_COVER = "59985a8086f77414ec448d1a", + RECEIVER_PPSH41_DUST_COVER = "5ea03e5009aa976f2e7a514b", + RECEIVER_RD704_DUST_COVER = "628a665a86cbd9750d2ff5e5", + RECEIVER_RPK16_DUST_COVER = "5beec91a0db834001961942d", + RECEIVER_SA58_EXTREME_DUTY_DUST_COVER = "5b099bb25acfc400186331e8", + RECEIVER_SKS_DUST_COVER = "634f05ca517ccc8a960fc748", + RECEIVER_SKS_LEAPERS_UTG_PRO_MTU017_RECEIVER_COVER_MOUNT = "6415c694da439c6a97048b56", + RECEIVER_SOK12_DUST_COVER_SB02 = "57616c112459773cce774d66", + RECEIVER_SR25_762X51_UPPER = "5df8e4080b92095fd441e594", + RECEIVER_SR2M_DUST_COVER = "62e27a7865f0b1592a49e17b", + RECEIVER_STEYR_AUG_A3_556X45 = "62e7c72df68e7a0676050c77", + RECEIVER_STM9_9X19_UPPER = "602e63fb6335467b0c5ac94d", + RECEIVER_SVDS_CUSTOM_CUT_DUST_COVER = "5dfce88fe9dc277128008b2e", + RECEIVER_SVDS_DUST_COVER = "5c471bd12e221602b4129c3a", + RECEIVER_SVT_DUST_COVER = "64119cdbdcf48d656f0aa272", + RECEIVER_TX15_556X45_LIGHTWEIGHT_UPPER = "5d4405aaa4b9361e6a4e6bd3", + RECEIVER_VPO101_VEPRHUNTER_DUST_COVER = "5c503d0a2e221602b542b7ef", + RECEIVER_VSS_DUST_COVER = "578395402459774a256959b5", + REPAIRKITS_BODY_ARMOR_REPAIR_KIT = "591094e086f7747caa7bb2ef", + REPAIRKITS_WEAPON_REPAIR_KIT = "5910968f86f77425cf569c32", + REVOLVER_CHIAPPA_RHINO_200DS_9X19 = "624c2e8614da335f1e034d8c", + REVOLVER_CHIAPPA_RHINO_50DS_357 = "61a4c8884f95bc3b2c5dc96f", + REVOLVER_MILKOR_M32A1_MSGL_40MM_GRENADE_LAUNCHER = "6275303a9f372d6ea97f9ec7", + REVOLVER_MTS25512_12GA_SHOTGUN = "60db29ce99594040e04c4a27", + REVOLVER_RSH12_127X55 = "633ec7c2a6918cb895019c6c", + SECURE_CONTAINER_ALPHA = "544a11ac4bdc2d470e8b456a", + SECURE_CONTAINER_BETA = "5857a8b324597729ab0a0e7d", + SECURE_CONTAINER_BOSS = "5c0a794586f77461c458f892", + SECURE_CONTAINER_EPSILON = "59db794186f77448bc595262", + SECURE_CONTAINER_GAMMA = "5857a8bc2459772bad15db29", + SECURE_CONTAINER_GAMMA_TUE = "665ee77ccf2d642e98220bca", + SECURE_CONTAINER_KAPPA = "5c093ca986f7740a1867ab12", + SECURE_THETA_SECURE_CONTAINER = "664a55d84a90fc2c8a6305c9", + SECURE_TOURNAMENT_SECURED_CONTAINER = "64f6f4c5911bcdfe8b03b0dc", + SECURE_WAIST_POUCH = "5732ee6a24597719ae0c0281", + SHOTGUN_BENELLI_M3_SUPER_90_12GA_DUALMODE = "6259b864ebedf17603599e88", + SHOTGUN_MOSSBERG_590A1_12GA_PUMPACTION = "5e870397991fd70db46995c8", + SHOTGUN_MP133_12GA_PUMPACTION = "54491c4f4bdc2db1078b4568", + SHOTGUN_MP153_12GA_SEMIAUTOMATIC = "56dee2bdd2720bc8328b4567", + SHOTGUN_MP155_12GA_SEMIAUTOMATIC = "606dae0ab0e443224b421bb7", + SHOTGUN_MP18_762X54R_SINGLESHOT_RIFLE = "61f7c9e189e6fb1a5e3ea78d", + SHOTGUN_MP431C_12GA_DOUBLEBARREL = "5580223e4bdc2d1c128b457f", + SHOTGUN_MP43_12GA_SAWEDOFF_DOUBLEBARREL = "64748cb8de82c85eaf0a273a", + SHOTGUN_REMINGTON_MODEL_870_12GA_PUMPACTION = "5a7828548dc32e5a9c28b516", + SHOTGUN_SAIGA12K_VER10_12GA_SEMIAUTOMATIC = "576165642459773c7a400233", + SHOTGUN_TOZ106_20GA_BOLTACTION = "5a38e6bac4a2826c6e06d79b", + SHOTGUN_TOZ_KS23M_23X75MM_PUMPACTION = "5e848cc2988a8701445df1e8", + SIGNALPISTOL_ZID_SP81_26X75_SIGNAL_PISTOL = "620109578d82e67e7911abf2", + SILENCER_9A91_9X39_SOUND_SUPPRESSOR = "64527a3a7da7133e5a09ca99", + SILENCER_AAC_762SDN6_MULTICALIBER_SOUND_SUPPRESSOR = "5a34fe59c4a282000b1521a2", + SILENCER_AAC_ILLUSION_9_9X19_SOUND_SUPPRESSOR = "5c7e8fab2e22165df16b889b", + SILENCER_AI_338_LM_TACTICAL_SOUND_MODERATOR = "62811fa609427b40ab14e765", + SILENCER_AK12_545X39_SOUND_SUPPRESSOR = "64c196ad26a15b84aa07132f", + SILENCER_AK74_HEXAGON_545X39_SOUND_SUPPRESSOR = "593d493f86f7745e6b2ceb22", + SILENCER_AK74_HEXAGON_WAFFLEMAKER_545X39_SOUND_SUPPRESSOR = "615d8f8567085e45ef1409ca", + SILENCER_AK74_TGPA_545X39_SOUND_SUPPRESSOR = "564caa3d4bdc2d17108b458e", + SILENCER_AKM_HEXAGON_762X39_SOUND_SUPPRESSOR = "593d489686f7745c6255d58a", + SILENCER_AKM_PBS1_762X39_SOUND_SUPPRESSOR = "5a0d63621526d8dba31fe3bf", + SILENCER_AKM_ZENIT_DTK4M_762X39_SOUND_SUPPRESSOR = "59fb257e86f7742981561852", + SILENCER_AKS74U_PBS4_545X39_SOUND_SUPPRESSOR = "57ffb0e42459777d047111c5", + SILENCER_AK_HEXAGON_DTKP_MK2_762X39_SOUND_SUPPRESSOR = "5e208b9842457a4a7a33d074", + SILENCER_ALPHA_DOG_ALPHA_9_9X19_SOUND_SUPPRESSOR = "5a33a8ebc4a282000c5a950d", + SILENCER_APB_9X18PM_SOUND_SUPPRESSOR = "5abcc328d8ce8700194394f3", + SILENCER_AR15_GRIFFIN_ARMAMENT_M4SDK_556X45_SOUND_SUPPRESSOR = "638612b607dfed1ccb7206ba", + SILENCER_ASH12_127X55_SOUND_SUPPRESSOR = "5caf187cae92157c28402e43", + SILENCER_AS_VAL_9X39_INTEGRAL_BARRELSUPPRESSOR = "57c44dd02459772d2e0ae249", + SILENCER_AWC_THOR_PSR_XL_MULTICALIBER_SOUND_SUPPRESSOR = "63877c99e785640d436458ea", + SILENCER_CO_HYBRID_46_MULTICALIBER_SOUND_SUPPRESSOR = "59bffbb386f77435b379b9c2", + SILENCER_CO_OMEGA_45K_45_ACP_SOUND_SUPPRESSOR = "5fc4b9b17283c4046c5814d7", + SILENCER_CO_OSPREY_9_9X19_SOUND_SUPPRESSOR = "5a32a064c4a28200741e22de", + SILENCER_CO_SAKER_ASR_556_556X45_SOUND_SUPPRESSOR = "60926df0132d4d12c81fd9df", + SILENCER_CO_SALVO_12_12GA_SOUND_SUPPRESSOR = "5b363dd25acfc4001a598fd2", + SILENCER_CO_SPARROW_22_SOUND_SUPPRESSOR = "54490a4d4bdc2dbc018b4573", + SILENCER_DANIEL_DEFENSE_WAVE_QD_SOUND_SUPPRESSOR = "5cff9e84d7ad1a049e54ed55", + SILENCER_FN_P90_ATTENUATOR_57X28_SOUND_SUPPRESSOR = "5cebec00d7f00c065c53522a", + SILENCER_GEMTECH_ONE_MULTICALIBER_SOUND_SUPPRESSOR = "5c7955c22e221644f31bfd5e", + SILENCER_GEMTECH_SFN57_57X28_SOUND_SUPPRESSOR = "5d3ef698a4b9361182109872", + SILENCER_GLOCK_9X19_FISCHER_DEVELOPMENT_FD917_SOUND_SUPPRESSOR = "5a7ad74e51dfba0015068f45", + SILENCER_HEXAGON_12K_12GA_SOUND_SUPPRESSOR = "59c0ec5b86f77435b128bfca", + SILENCER_HK_G28_BT_QD_762X51_SOUND_SUPPRESSOR = "6171367e1cb55961fa0fdb36", + SILENCER_HK_MP5SD_9X19_SOUND_SUPPRESSOR = "5926d33d86f77410de68ebc0", + SILENCER_HK_MP7_BT_ROTEX_2_46X30_SOUND_SUPPRESSOR = "5ba26ae8d4351e00367f9bdb", + SILENCER_HK_UMP_BT_OEM_45_ACP_SOUND_SUPPRESSOR = "6130c4d51cb55961fa0fd49f", + SILENCER_KAC_PRSQDC_762X51_SOUND_SUPPRESSOR = "5dfa3d2b0dee1b22f862eade", + SILENCER_KAC_QDC_556X45_SOUND_SUPPRESSOR = "626673016f1edc06f30cf6d5", + SILENCER_KAC_QDC_65X35_SOUND_SUPPRESSOR = "55d617094bdc2d89028b4568", + SILENCER_KAC_QDSS_NT4_556X45_SOUND_SUPPRESSOR_BLACK = "57da93632459771cb65bf83f", + SILENCER_KAC_QDSS_NT4_556X45_SOUND_SUPPRESSOR_FDE = "57dbb57e2459774673234890", + SILENCER_MCX_SPEAR_SLX68MGQD_68X51_SOUND_SUPPRESSOR = "652911e650dc782999054b9d", + SILENCER_MOSIN_RIFLE_BRAMIT_762X54R_SOUND_SUPPRESSOR = "5b86a0e586f7745b600ccb23", + SILENCER_MP9_9X19_SOUND_SUPPRESSOR = "5de8f2d5b74cd90030650c72", + SILENCER_MPXSD_9X19_INTEGRATED_SOUND_SUPPRESSOR = "58aeac1b86f77457c419f475", + SILENCER_PB_9X18PM_SOUND_SUPPRESSOR = "56e05b06d2720bb2668b4586", + SILENCER_PL15_9X19_SOUND_SUPPRESSOR = "602a97060ddce744014caf6f", + SILENCER_PP1901_VITYAZ_9X19_SOUND_SUPPRESSOR = "59bfc5c886f7743bf6794e62", + SILENCER_PP9101_KEDRB_9X18PM_SOUND_SUPPRESSOR = "57f3c8cc2459773ec4480328", + SILENCER_ROTOR_43_366_TKM_MUZZLE_BRAKECOMPENSATOR = "5a9fbb74a2750c0032157181", + SILENCER_ROTOR_43_556X45_MUZZLE_BRAKECOMPENSATOR = "5a9fbb84a2750c00137fa685", + SILENCER_ROTOR_43_762X39_MUZZLE_BRAKECOMPENSATOR = "5a9fbacda2750c00141e080f", + SILENCER_ROTOR_43_762X54R_MUZZLE_BRAKECOMPENSATOR = "5e01ea19e9dc277128008c0b", + SILENCER_ROTOR_43_9X19_MUZZLE_BRAKECOMPENSATOR = "5a9fb739a2750c003215717f", + SILENCER_SIG_SAUER_SRD762QD_762X51_SOUND_SUPPRESSOR = "5fbe760793164a5b6278efc8", + SILENCER_SIG_SAUER_SRD762TI_762X51_SOUND_SUPPRESSOR = "5fbe7618d6fa9c00c571bb6c", + SILENCER_SIG_SAUER_SRD9_9X19_SOUND_SUPPRESSOR = "5c6165902e22160010261b28", + SILENCER_SKS_HEXAGON_762X39_SOUND_SUPPRESSOR = "593d490386f7745ee97a1555", + SILENCER_SR1MP_9X21_SOUND_SUPPRESSOR = "5a27b6bec4a282000e496f78", + SILENCER_SR2M_9X21_SOUND_SUPPRESSOR_SV1381 = "62e2a7138e1ac9380579c122", + SILENCER_STEYR_AUG_ASE_UTRA_S_SERIES_SL7I_556X45_SOUND_SUPPRESSOR = "634eba08f69c710e0108d386", + SILENCER_STEYR_AUG_RELFEX_T4AUG_RANGER_556X45_SOUND_SUPPRESSOR = "630f2982cdb9e392db0cbcc7", + SILENCER_SUREFIRE_SOCOM556MINI_MONSTER_556X45_SOUND_SUPPRESSOR = "55d6190f4bdc2d87028b4567", + SILENCER_SUREFIRE_SOCOM556MONSTER_556X45_SOUND_SUPPRESSOR = "55d614004bdc2d86028b4568", + SILENCER_SUREFIRE_SOCOM556RC2_556X45_SOUND_SUPPRESSOR = "5ea17bbc09aa976f2e7a51cd", + SILENCER_SV98_762X54R_SOUND_SUPPRESSOR = "5c4eecc32e221602b412b440", + SILENCER_THUNDER_BEAST_ARMS_ULTRA_5_SOUND_SUPPRESSOR = "5d44064fa4b9361e4f6eb8b5", + SILENCER_TT_762X25_MAKESHIFT_SOUND_SUPPRESSOR = "571a28e524597720b4066567", + SILENCER_VPO101_VEPRHUNTER_ROTOR_43_762X51_MUZZLE_BRAKECOMPENSATOR = "5f63407e1b231926f2329f15", + SILENCER_VSS_9X39_INTEGRAL_BARRELSUPPRESSOR = "57838c962459774a1651ec63", + SMG_BT_MP9N_9X19_SUBMACHINE_GUN = "5de7bd7bfd6b4e6e2276dc25", + SMG_BT_MP9_9X19_SUBMACHINE_GUN = "5e00903ae9dc277128008b87", + SMG_FN_P90_57X28_SUBMACHINE_GUN = "5cc82d76e24e8d00134b4b83", + SMG_HK_MP5K_9X19_SUBMACHINE_GUN = "5d2f0d8048f0356c925bc3b0", + SMG_HK_MP5_9X19_SUBMACHINE_GUN_NAVY_3_ROUND_BURST = "5926bb2186f7744b1c6c6e60", + SMG_HK_MP7A1_46X30_SUBMACHINE_GUN = "5ba26383d4351e00334c93d9", + SMG_HK_MP7A2_46X30_SUBMACHINE_GUN = "5bd70322209c4d00d7167b8f", + SMG_HK_UMP_45_ACP_SUBMACHINE_GUN = "5fc3e272f8b6a877a729eac5", + SMG_PP1901_VITYAZ_9X19_SUBMACHINE_GUN = "59984ab886f7743e98271174", + SMG_PP9101_KEDRB_9X18PM_SUBMACHINE_GUN = "57f3c6bd24597738e730fa2f", + SMG_PP91_KEDR_9X18PM_SUBMACHINE_GUN = "57d14d2524597714373db789", + SMG_PP9_KLIN_9X18PMM_SUBMACHINE_GUN = "57f4c844245977379d5c14d1", + SMG_PPSH41_762X25_SUBMACHINE_GUN = "5ea03f7400685063ec28bfa8", + SMG_SAIGA9_9X19_CARBINE = "59f9cabd86f7743a10721f46", + SMG_SIG_MPX_9X19_SUBMACHINE_GUN = "58948c8e86f77409493f7266", + SMG_SOYUZTM_STM9_GEN2_9X19_CARBINE = "60339954d62c9b14ed777c06", + SMG_SR2M_VERESK_9X21_SUBMACHINE_GUN = "62e14904c2699c0ec93adc47", + SMG_TDI_KRISS_VECTOR_GEN2_45_ACP_SUBMACHINE_GUN = "5fb64bc92b1b027b1f50bcf2", + SMG_TDI_KRISS_VECTOR_GEN2_9X19_SUBMACHINE_GUN = "5fc3f2d5900b1d5091531e57", + SNIPERRIFLE_ACCURACY_INTERNATIONAL_AXMC_338_LM_BOLTACTION_SNIPER_RIFLE = "627e14b21713922ded6f2c15", + SNIPERRIFLE_LOBAEV_ARMS_DVL10_762X51_BOLTACTION_SNIPER_RIFLE = "588892092459774ac91d4b11", + SNIPERRIFLE_MOLOT_ARMS_VPO215_GORNOSTAY_366_TKM_BOLTACTION_RIFLE = "5de652c31b7e3716273428be", + SNIPERRIFLE_MOSIN_762X54R_BOLTACTION_RIFLE_INFANTRY = "5bfd297f0db834001a669119", + SNIPERRIFLE_MOSIN_762X54R_BOLTACTION_RIFLE_SNIPER = "5ae08f0a5acfc408fb1398a1", + SNIPERRIFLE_ORSIS_T5000M_762X51_BOLTACTION_SNIPER_RIFLE = "5df24cf80dee1b22f862e9bc", + SNIPERRIFLE_REMINGTON_MODEL_700_762X51_BOLTACTION_SNIPER_RIFLE = "5bfea6e90db834001b7347f3", + SNIPERRIFLE_SV98_762X54R_BOLTACTION_SNIPER_RIFLE = "55801eed4bdc2d89578b4588", + SORTINGTABLE_SORTING_TABLE = "602543c13fee350cd564d032", + SPECIALSCOPE_ARMASIGHT_VULCAN_MG_35X_BRAVO_NIGHT_VISION_SCOPE = "5b3b6e495acfc4330140bd88", + SPECIALSCOPE_ARMASIGHT_ZEUSPRO_640_28X50_30HZ_THERMAL_SCOPE = "63fc44e2429a8a166c7f61e6", + SPECIALSCOPE_FLIR_RS32_2259X_35MM_60HZ_THERMAL_RIFLESCOPE = "5d1b5e94d7ad1a2b865a96b0", + SPECIALSCOPE_MP155_ULTIMA_THERMAL_CAMERA = "606f2696f2cb2e02a42aceb1", + SPECIALSCOPE_NSPUM_35X_DOVETAIL_NIGHT_VISION_SCOPE = "5a7c74b3e899ef0014332c29", + SPECIALSCOPE_SIG_SAUER_ECHO1_12X30MM_30HZ_THERMAL_REFLEX_SCOPE = "6478641c19d732620e045e17", + SPECIALSCOPE_TORREY_PINES_LOGIC_T12W_30HZ_THERMAL_REFLEX_SIGHT = "609bab8b455afd752b2e6138", + SPECIALSCOPE_TRIJICON_REAPIR_THERMAL_SCOPE = "5a1eaa87fcdbcb001865f75e", + SPECITEM_LEATHERMAN_MULTITOOL = "544fb5454bdc2df8738b456a", + SPECITEM_MS2000_MARKER = "5991b51486f77447b112d44f", + SPECITEM_RADIO_REPEATER = "63a0b2eabea67a6d93009e52", + SPECITEM_SIGNAL_JAMMER = "5ac78a9b86f7741cca0bbd8d", + SPECITEM_WIFI_CAMERA = "5b4391a586f7745321235ab2", + STASH_EDGE_OF_DARKNESS_STASH_10X68 = "5811ce772459770e9e5f9532", + STASH_LEFT_BEHIND_STASH_10X40 = "5811ce572459770cba1a34ea", + STASH_PREPARE_FOR_ESCAPE_STASH_10X50 = "5811ce662459770f6f490f32", + STASH_QUESTOFFLINE = "5963866b86f7747bfa1c4462", + STASH_QUESTRAID = "5963866286f7747bf429b572", + STASH_STANDARD_STASH_10X30 = "566abbc34bdc2d92178b4576", + STASH_THE_UNHEARD_EDITION_STASH_10X72 = "6602bcf19cc643f44a04274b", + STIM_2A2BTG_STIMULANT_INJECTOR = "66507eabf5ddb0818b085b68", + STIM_3BTG_STIMULANT_INJECTOR = "5ed515c8d380ab312177c0fa", + STIM_ADRENALINE_INJECTOR = "5c10c8fd86f7743d7d706df3", + STIM_AHF1M_STIMULANT_INJECTOR = "5ed515f6915ec335206e4152", + STIM_EBUDAL = "648c1a965043c4052a4f8505", + STIM_ETGCHANGE_REGENERATIVE_STIMULANT_INJECTOR = "5c0e534186f7747fa1419867", + STIM_L1_NOREPINEPHRINE_INJECTOR = "5ed515e03a40a50460332579", + STIM_MELDONIN_INJECTOR = "5ed5160a87bb8443d10680b5", + STIM_MULE_STIMULANT_INJECTOR = "5ed51652f6c34d2cc26336a1", + STIM_OBDOLBOS_2_COCKTAIL_INJECTOR = "637b60c3b7afa97bfc3d7001", + STIM_OBDOLBOS_COCKTAIL_INJECTOR = "5ed5166ad380ab312177c100", + STIM_P22_PRODUCT_22_STIMULANT_INJECTOR = "5ed515ece452db0eb56fc028", + STIM_PERFOTORAN_BLUE_BLOOD_STIMULANT_INJECTOR = "637b6251104668754b72f8f9", + STIM_PNB_PRODUCT_16_STIMULANT_INJECTOR = "637b6179104668754b72f8f5", + STIM_PROPITAL_REGENERATIVE_STIMULANT_INJECTOR = "5c0e530286f7747fa1419862", + STIM_SJ12_TGLABS_COMBAT_STIMULANT_INJECTOR = "637b612fb7afa97bfc3d7005", + STIM_SJ1_TGLABS_COMBAT_STIMULANT_INJECTOR = "5c0e531286f7747fa54205c2", + STIM_SJ6_TGLABS_COMBAT_STIMULANT_INJECTOR = "5c0e531d86f7747fa23f4d42", + STIM_SJ9_TGLABS_COMBAT_STIMULANT_INJECTOR = "5fca13ca637ee0341a484f46", + STIM_TRIMADOL_STIMULANT_INJECTOR = "637b620db7afa97bfc3d7009", + STIM_XTG12_ANTIDOTE_INJECTOR = "5fca138c2a7b221b2852a5c6", + STIM_ZAGUSTIN_HEMOSTATIC_DRUG_INJECTOR = "5c0e533786f7747fa23f4d47", + STOCK_9A91_TOPFOLDING = "6451167ad4928d46d30be3fd", + STOCK_AI_AXMC_AX_BUTT = "62811f828193841aca4a45c3", + STOCK_AI_AXMC_GTAC_ARTYPE_PISTOL_GRIP_ADAPTER = "62811e335631d45211793c95", + STOCK_AI_AXMC_PISTOL_GRIP = "62811e2510e26c1f344e6554", + STOCK_AK12 = "5beec8c20db834001d2c465c", + STOCK_AK12_BUFFER_TUBE = "649ec87d8007560a9001ab36", + STOCK_AK545_SAG_BUFFER_TUBE = "628b9a40717774443b15e9f2", + STOCK_AK74MAK100_ZENIT_PT_LOCK = "5ac78eaf5acfc4001926317a", + STOCK_AK74M_CAA_AKTS_AK74_BUFFER_TUBE = "5cf50fc5d7f00c056c53f83c", + STOCK_AK74M_POLYMER_STOCK_6P34_SB15 = "5ac50c185acfc400163398d4", + STOCK_AK74_PLUM_POLYMER_STOCK_6P20_SB7 = "5cbdb1b0ae9215000d50e105", + STOCK_AK74_POLYMER_STOCK_6P20_SB7 = "5649b0fc4bdc2d17108b4588", + STOCK_AK74_WOODEN_STOCK_6P20_SB5 = "5649b1c04bdc2d16268b457c", + STOCK_AKMAK74_CAA_AKTS_BUFFER_TUBE = "5cf518cfd7f00c065b422214", + STOCK_AKMAK74_FAB_DEFENSE_UAS = "5b04473a5acfc40018632f70", + STOCK_AKMAK74_HERA_ARMS_CQR47_PISTOL_GRIPBUTT = "619b69037b9de8162902673e", + STOCK_AKMAK74_HEXAGON_KOCHERGA_STOCK_ANODIZED_RED = "5e217ba4c1434648c13568cd", + STOCK_AKMAK74_MAGPUL_ZHUKOVS = "5b0e794b5acfc47a877359b2", + STOCK_AKMAK74_ME4_BUFFER_TUBE_ADAPTER = "5649b2314bdc2d79388b4576", + STOCK_AKMAK74_PROMAG_ARCHANGEL_OPFOR_AA47_BUTT = "6087e2a5232e5a31c233d552", + STOCK_AKMAK74_RD_AK_TO_M4_BUFFER_TUBE_ADAPTER = "628a6678ccaab13006640e49", + STOCK_AKMAK74_ZENIT_PT_LOCK = "5b222d335acfc4771e1be099", + STOCK_AKMSN_SHOULDER_PIECE_6P4N_SB119 = "5abcd472d8ce8700166032ae", + STOCK_AKMS_SHOULDER_PIECE_6P4_SB119 = "59ff3b6a86f77477562ff5ed", + STOCK_AKM_WOODEN_STOCK_6P1_SB5 = "59d6514b86f774171a068a08", + STOCK_AKS74AKS74U_ZENIT_PT_LOCK = "59ecc28286f7746d7a68aa8c", + STOCK_AKS74U_METAL_SKELETON_STOCK_6P26_SB5 = "57dc347d245977596754e7a1", + STOCK_AKS74_METAL_SKELETONIZED_STOCK_6P21_SB5 = "5ab626e4d8ce87272e4c6e43", + STOCK_AK_100SERIES_METAL_SKELETONIZED = "6386300124a1dc425c00577a", + STOCK_AK_CUSTOM_ARMS_STEF_74_SKELETON_STOCK_EXTENSION = "6494094948796d891603e59f", + STOCK_AK_GP25_ACCESSORY_KIT_RECOIL_PAD = "5a0c59791526d8dba737bba7", + STOCK_AK_ZENIT_PT1_KLASSIKA = "5b222d405acfc400153af4fe", + STOCK_AK_ZENIT_PT3_KLASSIKA = "59ecc3dd86f7746dc827481c", + STOCK_APB_DETACHABLE_WIRE = "5a17fb9dfcdbcbcae6687291", + STOCK_AR15_ADAR_215_BUFFER_TUBE = "5c0faeddd174af02a962601f", + STOCK_AR15_ADAR_215_WOODEN = "5c0e2ff6d174af02a1659d4a", + STOCK_AR15_B5_SYSTEMS_PRECISION = "5fc2369685fd526b824a5713", + STOCK_AR15_CMMG_RIPSTOCK_BUTT = "606587d11246154cad35d635", + STOCK_AR15_COLT_A2_BUFFER_TUBE = "5a33ca0fc4a282000d72292f", + STOCK_AR15_COLT_CARBINE_BUFFER_TUBE = "5649be884bdc2d79388b4577", + STOCK_AR15_DANIEL_DEFENSE_ENHANCED_COLLAPSIBLE_BUTTSTOCK_BLACK = "6516e91f609aaf354b34b3e2", + STOCK_AR15_DANIEL_DEFENSE_ENHANCED_COLLAPSIBLE_BUTTSTOCK_FDE = "6516e971a3d4c6497930b450", + STOCK_AR15_DOUBLESTAR_ACE_SOCOM_GEN4 = "5d120a10d7ad1a4e1026ba85", + STOCK_AR15_ERGO_F93_PRO = "5b0800175acfc400153aebd4", + STOCK_AR15_FAB_DEFENSE_GLCORE_BUTT = "602e620f9b513876d4338d9a", + STOCK_AR15_FAB_DEFENSE_GLR16S = "5bfe86df0db834001b734685", + STOCK_AR15_FAB_DEFENSE_GLSHOCK_BUTT = "5a9eb32da2750c00171b3f9c", + STOCK_AR15_HERA_ARMS_CQR_PISTOL_GRIPBUTT = "5a33e75ac4a2826c6e06d759", + STOCK_AR15_HIGH_STANDARD_M4SS = "55d4ae6c4bdc2d8b2f8b456e", + STOCK_AR15_HK_E1_BUTT = "5c87a07c2e2216001219d4a2", + STOCK_AR15_HK_SLIM_LINE_BUTT = "5bb20e70d4351e0035629f8f", + STOCK_AR15_KRISS_DEFIANCE_DS150_STOCK_BLACK = "5fbbaa86f9986c4cff3fe5f6", + STOCK_AR15_KRISS_DEFIANCE_DS150_STOCK_FDE = "5fce16961f152d4312622bc9", + STOCK_AR15_LMT_SOPMOD = "5ae30c9a5acfc408fb139a03", + STOCK_AR15_MAGPUL_CTR_CARBINE_STOCK_BLACK = "5d135e83d7ad1a21b83f42d8", + STOCK_AR15_MAGPUL_CTR_CARBINE_STOCK_FDE = "5d135ecbd7ad1a21c176542e", + STOCK_AR15_MAGPUL_MOE_CARBINE_STOCK_BLACK = "56eabf3bd2720b75698b4569", + STOCK_AR15_MAGPUL_MOE_CARBINE_STOCK_FDE = "58d2946386f774496974c37e", + STOCK_AR15_MAGPUL_MOE_CARBINE_STOCK_FOLIAGE_GREEN = "58d2946c86f7744e271174b5", + STOCK_AR15_MAGPUL_MOE_CARBINE_STOCK_OLIVE_DRAB = "58d2947686f774485c6a1ee5", + STOCK_AR15_MAGPUL_MOE_CARBINE_STOCK_STEALTH_GREY = "58d2947e86f77447aa070d53", + STOCK_AR15_MAGPUL_MOE_SLK_BUTTSTOCK_COYOTE_TAN = "6529370c405a5f51dd023db8", + STOCK_AR15_MAGPUL_PRS_GEN2_STOCK_FDE = "5a33cae9c4a28232980eb086", + STOCK_AR15_MAGPUL_PRS_GEN3_STOCK_BLACK = "5d44069ca4b9361ebd26fc37", + STOCK_AR15_MAGPUL_PRS_GEN3_STOCK_GREY = "5d4406a8a4b9361e4f6eb8b7", + STOCK_AR15_MAGPUL_UBR_GEN2_STOCK_BLACK = "5947e98b86f774778f1448bc", + STOCK_AR15_MAGPUL_UBR_GEN2_STOCK_FDE = "5947eab886f77475961d96c5", + STOCK_AR15_MFT_BUS = "5947c73886f7747701588af5", + STOCK_AR15_RTM_ATP_BUFFER_TUBE = "638de3603a1a4031d8260b8c", + STOCK_AR15_SB_TACTICAL_SBA3_BRACE = "628a85ee6b1d481ff772e9d5", + STOCK_AR15_SOYUZTM_BUFFER_TUBE = "602e3f1254072b51b239f713", + STOCK_AR15_STRIKE_INDUSTRIES_ADVANCED_RECEIVER_EXTENSION_BUFFER_TUBE = "5c793fb92e221644f31bfb64", + STOCK_AR15_STRIKE_INDUSTRIES_ADVANCED_RECEIVER_EXTENSION_BUFFER_TUBE_ANODIZED_RED = "5c793fc42e221600114ca25d", + STOCK_AR15_STRIKE_INDUSTRIES_VIPER_MOD_1 = "5c793fde2e221601da358614", + STOCK_AR15_STRIKE_INDUSTRIES_VIPER_PDW = "627254cc9c563e6e442c398f", + STOCK_AR15_TROY_M7A1_PDW_STOCK_BLACK = "591aef7986f774139d495f03", + STOCK_AR15_TROY_M7A1_PDW_STOCK_FDE = "591af10186f774139d495f0e", + STOCK_AR15_VLTOR_EMOD = "5b39f8db5acfc40016387a1b", + STOCK_ARMACON_BASKAK = "57ade1442459771557167e15", + STOCK_AS_VAL_SKELETON = "57c450252459772d28133253", + STOCK_AVT40_WOODEN = "6410745d5dd49d77bd078485", + STOCK_BENELLI_M3_MESA_TACTICAL_URBINO = "625eb0faa6e3a82193267ad9", + STOCK_BENELLI_M3_TELESCOPIC = "6259c3387d6aab70bc23a18d", + STOCK_CMMG_BUFFER_TUBE = "606587e18900dc2d9a55b65f", + STOCK_CNC_GUNS_OVSV98_M12B = "624c29ce09cd027dff2f8cd7", + STOCK_DANIEL_DEFENSE_TCS_12MM_BUTTPAD = "6516e9bc5901745209404287", + STOCK_DANIEL_DEFENSE_TCS_20MM_BUTTPAD = "6516e9d7e239bd0c487e3766", + STOCK_DOUBLESTAR_ACE_RECOIL_PAD = "5d120a28d7ad1a1c8962e295", + STOCK_DVL10_LOBAEV_ARMS = "58889d0c2459775bc215d981", + STOCK_FAB_DEFENSE_BUFFER_TUBE_FOR_AGR870 = "5bfe89510db834001808a127", + STOCK_FN_P90 = "5cc700b9e4a949000f0f0f25", + STOCK_FN_P90_BUTTPAD = "5cc700cae4a949035e43ba72", + STOCK_FN_P90_DAMAGE_INDUSTRIES_BUTTPAD = "5cc700d4e4a949000f0f0f28", + STOCK_FN_PS90 = "5cebec10d7f00c065703d185", + STOCK_FN_SCAR_CHEEK_REST = "618167441cb55961fa0fdc71", + STOCK_FN_SCAR_CHEEK_REST_FDE = "61825d24d3a39d50044c13af", + STOCK_FN_SCAR_FOLDING_POLYMER = "61816734d8e3106d9806c1f3", + STOCK_FN_SCAR_FOLDING_POLYMER_STOCK_FDE = "61825d06d92c473c770215de", + STOCK_FN_SCAR_RETRACTABLE_POLYMER = "618167528004cc50514c34f9", + STOCK_FN_SCAR_RETRACTABLE_POLYMER_STOCK_FDE = "61825d136ef05c2ce828f1cc", + STOCK_FN_SCAR_RUBBER_BUTTPAD = "618167616ef05c2ce828f1a8", + STOCK_GLOCK_FAB_DEFENSE_GLR17 = "5d1c702ad7ad1a632267f429", + STOCK_HK417_ADJUSTABLE_BUTT = "617155ee50224f204c1da3cd", + STOCK_HK417_E2_BUTT = "617154aa1cb55961fa0fdb3b", + STOCK_HK_ADJUSTABLE_BUTTSTOCK_CHEEK_REST = "61715e7e67085e45ef140b33", + STOCK_HK_ENHANCED_TUBE_BUFFER_TUBE = "5bb20e58d4351e00320205d7", + STOCK_HK_G28_BUFFER_TUBE = "617153016c780c1e710c9a2f", + STOCK_HK_G36_KV_ADJUSTABLE = "622f14e899892a7f9e08f6c5", + STOCK_HK_G36_POLYMER = "622f140da5958f63c67f1735", + STOCK_HK_MP5K_END_CAP = "5d2f25bc48f03502573e5d85", + STOCK_HK_MP5_A2 = "5926d3c686f77410de68ebc8", + STOCK_HK_MP5_A3_OLD_MODEL = "5926d40686f7740f152b6b7e", + STOCK_HK_MP5_END_CAP = "5c07c9660db834001a66b588", + STOCK_HK_MP7A1 = "5bcf0213d4351e0085327c17", + STOCK_HK_MP7A2 = "5bd704e7209c4d00d7167c31", + STOCK_HK_UMP_POLYMER = "5fc3e4ee7283c4046c5814af", + STOCK_KRISS_VECTOR_GEN2_FOLDING = "5fb6558ad6f0b2136f2d7eb7", + STOCK_KRISS_VECTOR_NONFOLDING_STOCK_ADAPTER = "5fb655b748c711690e3a8d5a", + STOCK_KRISS_VECTOR_PISTOL_SLING_ADAPTER = "5fb655a72b1b027b1f50bd06", + STOCK_KS23M_WIRE = "5e848dc4e4dbc5266a4ec63d", + STOCK_KS23_WOODEN = "5e848db4681bea2ada00daa9", + STOCK_M14_SAGE_INTERNATIONAL_M14ALCS_CHASSIS = "5addc7005acfc4001669f275", + STOCK_M14_SAGE_INTERNATIONAL_M14ALCS_MOD0 = "5addc7ac5acfc400194dbd90", + STOCK_M14_TROY_SASS_CHASSIS = "5ab372a310e891001717f0d8", + STOCK_M1A_PROMAG_ARCHANGEL_CHASSIS = "5addbf175acfc408fb13965b", + STOCK_M1A_SOCOM_16 = "5aaf8e43e5b5b00015693246", + STOCK_M700_AB_ARMS_MODX_BUFFER_TUBE_SIDE_FOLDER_ADAPTER = "5cde77a9d7f00c000f261009", + STOCK_M700_AB_ARMS_MODX_GEN_3_CHASSIS = "5cde739cd7f00c0010373bd3", + STOCK_M700_AI_AT_AICS_POLYMER_CHASSIS = "5d25d0ac8abbc3054f3e61f7", + STOCK_M700_HOGUE_OVERMOLDED_GHILLIE = "5bfeb32b0db834001a6694d9", + STOCK_M700_MAGPUL_PRO_700_CHASSIS = "5cdeac22d7f00c000f26168f", + STOCK_M700_MAGPUL_PRO_700_FOLDING = "5cdeac42d7f00c000d36ba73", + STOCK_M700_PROMAG_ARCHANGEL_CHASSIS = "5cf13123d7f00c1085616a50", + STOCK_M870_MAGPUL_SGA_POLYMER = "5a78813bc5856700186c4abe", + STOCK_M870_MESA_TACTICAL_LEO_STOCK_ADAPTER = "5ae35b315acfc4001714e8b0", + STOCK_M870_SHOCKWAVE_RAPTOR_GRIP = "5a788169c5856700142fdd9e", + STOCK_M870_SPS_POLYMER = "5a7880d0c5856700142fdd9d", + STOCK_MAGPUL_MOE_CARBINE_RUBBER_BUTTPAD = "58d2912286f7744e27117493", + STOCK_MCXMPX_FOLDING_STOCK_ADAPTER_BUFFER_TUBE_COYOTE_TAN = "6529366450dc782999054ba0", + STOCK_MCXMPX_STOCK_LOCKING_HINGE_ASSEMBLY = "6529348224cbe3c74a05e5c4", + STOCK_MESA_TACTICAL_CROSSHAIR_HYDRAULIC_BUFFER_TUBE = "5ef1ba28c64c5d0dfc0571a5", + STOCK_MOSIN_RIFLE_AIM_SPORTS_RECOIL_PAD = "5bbde409d4351e003562b036", + STOCK_MOSIN_RIFLE_ATI_MONTE_CARLO_CHASSIS = "5bbdb870d4351e00367fb67d", + STOCK_MOSIN_RIFLE_CARBINE = "5bfd384c0db834001a6691d3", + STOCK_MOSIN_RIFLE_INFANTRY = "5bfd35380db83400232fe5cc", + STOCK_MOSIN_RIFLE_PROMAG_ARCHANGEL_OPFOR_PRS_CHASSIS = "5bae13bad4351e00320204af", + STOCK_MOSIN_RIFLE_SAWEDOFF = "5bfd36ad0db834001c38ef66", + STOCK_MOSIN_RIFLE_SAWEDOFF_SNIPER = "5bfd36290db834001966869a", + STOCK_MOSIN_RIFLE_SNIPER_CARBINE = "5bfd37c80db834001d23e842", + STOCK_MOSIN_RIFLE_STANDARD = "5ae096d95acfc400185c2c81", + STOCK_MOSSBERG_590A1_MAGPUL_SGA = "5eea217fc64c5d0dfc05712a", + STOCK_MOSSBERG_590A1_MESA_TACTICAL_LEO_GEN1_STOCK_ADAPTER = "5ef1b9f0c64c5d0dfc0571a1", + STOCK_MOSSBERG_590A1_POLYMER = "5e87116b81c4ed43e83cefdd", + STOCK_MP133153_PLASTIC = "56083be64bdc2d20478b456f", + STOCK_MP133153_PLASTIC_PISTOL_GRIP = "56083a334bdc2dc8488b4571", + STOCK_MP133153_WOODEN = "56083cba4bdc2de22e8b456f", + STOCK_MP155_ULTIMA_LARGE_RECOIL_PAD = "606f263a8900dc2d9a55b68d", + STOCK_MP155_ULTIMA_MEDIUM_RECOIL_PAD = "606f262c6d0bd7580617bafa", + STOCK_MP155_ULTIMA_POLYMER = "606eef756d0bd7580617baf8", + STOCK_MP155_ULTIMA_THIN_RECOIL_PAD = "606ef0812535c57a13424d20", + STOCK_MP155_WALNUT = "607d5a891246154cad35d6aa", + STOCK_MP18_POLYMER = "61f803b8ced75b2e852e35f8", + STOCK_MP18_WOODEN = "61f7b234ea4ab34f2f59c3ec", + STOCK_MP431C_BUTTPAD = "611a31ce5b7ffe001b4649d1", + STOCK_MP9 = "5de910da8b6c4240ba2651b5", + STOCK_MPXMCX_COLLAPSINGTELESCOPING = "5894a13e86f7742405482982", + STOCK_MPXMCX_LIGHTWEIGHT = "5fbcc437d724d907e2077d5c", + STOCK_MPXMCX_MAXIM_DEFENSE_CQB_TELESCOPING = "5c5db6ee2e221600113fba54", + STOCK_MPXMCX_PMM_ULSS_FOLDABLE = "5c5db6f82e2216003a0fe914", + STOCK_MPXMCX_RETRACTABLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", + STOCK_MPXMCX_TELESCOPING = "5fbcc429900b1d5091531dd7", + STOCK_MTS25512_WOODEN = "612781056f3d944a17348d60", + STOCK_MTS_2001 = "5adf23995acfc400185c2aeb", + STOCK_OPSKS_WOODEN = "587e0531245977466077a0f7", + STOCK_ORSIS_T5000M = "5df35ddddfc58d14537c2036", + STOCK_ORSIS_T5000M_ALUMINIUM_BODY = "5df35e59c41b2312ea3334d5", + STOCK_PKM_WOODEN = "646371a9f2404ab67905c8e6", + STOCK_PKP_POLYMER = "6492e3a97df7d749100e29ee", + STOCK_PK_ZENIT_PT2_KLASSIKA = "6492d7847363b8a52206bc52", + STOCK_PP1901_VITYAZ_METAL_SKELETON = "599851db86f77467372f0a18", + STOCK_PPSH41 = "5ea03e9400685063ec28bfa4", + STOCK_RPD_WOODEN = "6513f1798cb24472490ee331", + STOCK_RPK16_BUFFER_TUBE = "5beec8b20db834001961942a", + STOCK_SA58FAL_MAGPUL_PRS_2_POLYMER = "5b7d63b75acfc400170e2f8a", + STOCK_SA58_BRS = "5b7d64555acfc4001876c8e2", + STOCK_SA58_BUFFER_TUBE_ADAPTER = "5b099bf25acfc4001637e683", + STOCK_SA58_FOLDING = "5b7d63cf5acfc4001876c8df", + STOCK_SA58_HUMPBACK_POLYMER = "5b7d645e5acfc400170e2f90", + STOCK_SA58_SPR = "5b7d63de5acfc400170e2f8d", + STOCK_SKS_ATI_MONTE_CARLO_CHASSIS = "653ecef836fae5a82f02b869", + STOCK_SKS_FAB_DEFENSE_UAS_BUTT = "653ed132896b99b40a0292e6", + STOCK_SKS_FAB_DEFENSE_UAS_CHASSIS = "5d0236dad7ad1a0940739d29", + STOCK_SKS_TAPCO_INTRAFUSE_BUFFER_TUBE = "5afd7e095acfc40017541f61", + STOCK_SKS_TAPCO_INTRAFUSE_CHASSIS = "5afd7ded5acfc40017541f5e", + STOCK_SKS_TOZ_WOODEN_STOCK_56A231_SB5 = "574dad8024597745964bf05c", + STOCK_SOK12_AKSTYLE = "57616ca52459773c69055192", + STOCK_SR2MP_TOPFOLDING = "62e2969582ebf260c20539c2", + STOCK_SR2M_TOPFOLDING = "62e292e7b6c0ee2f230cee00", + STOCK_SV98_CNC_GUNS_OVSV98_CHASSIS = "623b2e9d11c3296b440d1638", + STOCK_SV98_WOODEN = "61faa91878830f069b6b7967", + STOCK_SVDS_LYNX_ARMS_HINGE_BUFFER_TUBE_ADAPTER = "6197b229af1f5202c57a9bea", + STOCK_SVDS_POLYMER = "5c471b5d2e221602b21d4e14", + STOCK_TOZ106 = "5a38ef1fc4a282000b1521f6", + STOCK_TOZ106_CUSTOM_CUT_MOSIN = "5c99f3592e221644fc633070", + STOCK_TOZ106_FAB_DEFENSE_GPCP_CHEEK_REST = "626a8ae89e664a2e2a75f409", + STOCK_VPO101_VEPRHUNTER = "5c503af12e221602b177ca02", + STOCK_VPO101_VEPRHUNTER_SVDSTYLE = "5f63405df5750b524b45f114", + STOCK_VPO136_VEPRKM_WOODEN = "59e6227d86f77440d64f5dc2", + STOCK_VPO209_WOODEN = "59e89d0986f77427600d226e", + STOCK_VPO215_GORNOSTAY = "5de655be4a9f347bc92edb88", + STOCK_VSK94 = "6452519e3d52156624001fd5", + STOCK_VSS_WOODEN = "578395e82459774a0e553c7b", + TACTICALCOMBO_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", + TACTICALCOMBO_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", + TACTICALCOMBO_GLOCK_GTL_21_TACTICAL_FLASHLIGHT_WITH_LASER = "5a800961159bd4315e3a1657", + TACTICALCOMBO_HOLOSUN_LS321_TACTICAL_DEVICE = "57fd23e32459772d0805bcf1", + TACTICALCOMBO_INSIGHT_WMX200_TACTICAL_FLASHLIGHT = "626becf9582c3e319310b837", + TACTICALCOMBO_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", + TACTICALCOMBO_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", + TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER_LAMMODULE = "5cc9c20cd7f00c001336c65d", + TACTICALCOMBO_OLIGHT_BALDR_PRO_TACTICAL_FLASHLIGHT_WITH_LASER = "6272370ee4013c5d7e31f418", + TACTICALCOMBO_OLIGHT_BALDR_PRO_TACTICAL_FLASHLIGHT_WITH_LASER_TAN = "6272379924e29f06af4d5ecb", + TACTICALCOMBO_STEINER_DBALPL_TACTICAL_DEVICE = "5d2369418abbc306c62e0c80", + TACTICALCOMBO_STEINER_LASTAC_2_TACTICAL_FLASHLIGHT = "5b07dd285acfc4001754240d", + TACTICALCOMBO_SUREFIRE_X400_ULTRA_TACTICAL_FLASHLIGHT_WITH_LASER = "56def37dd2720bec348b456a", + TACTICALCOMBO_SUREFIRE_XC1_TACTICAL_FLASHLIGHT = "5a7b483fe899ef0016170d15", + TACTICALCOMBO_TT_DLP_TACTICAL_PRECISION_LAMMODULE = "5c079ed60db834001a66b372", + TACTICALCOMBO_WILCOX_RAPTAR_ES_TACTICAL_RANGEFINDER = "61605d88ffa6e502ac5e7eeb", + TACTICALCOMBO_ZENIT_KLESCH2IKS_IR_ILLUMINATOR_WITH_LASER = "5a5f1ce64f39f90b401987bc", + TACTICALCOMBO_ZENIT_KLESCH2P_FLASHLIGHT_WITH_LASER = "560d657b4bdc2da74d8b4572", + TACTICALCOMBO_ZENIT_KLESCH2U_TACTICAL_FLASHLIGHT = "5b3a337e5acfc4704b4a19a0", + TACTICALCOMBO_ZENIT_PERST3_TACTICAL_DEVICE = "5c5952732e2216398b5abda2", + THERMALVISION_T7_THERMAL_GOGGLES_WITH_A_NIGHT_VISION_MOUNT = "5c110624d174af029e69734c", + VEST_511_TACTICAL_TACTEC_PLATE_CARRIER_RANGER_GREEN = "5b44cad286f77402a54ae7e5", + VEST_6B3TM01_ARMORED_RIG_KHAKI = "5d5d646386f7742797261fd9", + VEST_6B515_ZH86_ULEY_ARMORED_RIG_FLORA = "5c0e446786f7742013381639", + VEST_6B516_ZH86_ULEY_ARMORED_RIG_KHAKI = "5c0e3eb886f7742015526062", + VEST_ANA_TACTICAL_ALPHA_CHEST_RIG_OLIVE_DRAB = "592c2d1a86f7746dbe2af32a", + VEST_ANA_TACTICAL_M1_PLATE_CARRIER_OLIVE_DRAB = "5c0e722886f7740458316a57", + VEST_ANA_TACTICAL_M2_PLATE_CARRIER_DIGITAL_FLORA = "5ab8dced86f774646209ec87", + VEST_ARS_ARMA_A18_SKANDA_PLATE_CARRIER_MULTICAM = "5d5d87f786f77427997cfaef", + VEST_ARS_ARMA_CPC_MOD1_PLATE_CARRIER_ATACS_FG = "5e4ac41886f77406a511c9a8", + VEST_AZIMUT_SS_KHAMELION_CHEST_HARNESS_OLIVE = "63611865ba5b90db0c0399d1", + VEST_AZIMUT_SS_ZHUK_CHEST_HARNESS_BLACK = "603648ff5a45383c122086ac", + VEST_AZIMUT_SS_ZHUK_CHEST_HARNESS_SURPAT = "6040dd4ddcf9592f401632d2", + VEST_BLACKHAWK_COMMANDO_CHEST_HARNESS_BLACK = "5c0e9f2c86f77432297fe0a3", + VEST_BLACKHAWK_COMMANDO_CHEST_HARNESS_DESERT_TAN = "5b44c8ea86f7742d1627baf1", + VEST_BLACKROCK_CHEST_RIG_GRAY = "5648a69d4bdc2ded0b8b457b", + VEST_CQC_OSPREY_MK4A_PLATE_CARRIER_ASSAULT_MTP = "60a3c70cde5f453f634816a3", + VEST_CQC_OSPREY_MK4A_PLATE_CARRIER_PROTECTION_MTP = "60a3c68c37ea821725773ef5", + VEST_CRYE_PRECISION_AVS_PLATE_CARRIER_RANGER_GREEN = "544a5caa4bdc2d1a388b4568", + VEST_CRYE_PRECISION_AVS_PLATE_CARRIER_TAGILLA_EDITION = "609e860ebd219504d8507525", + VEST_CRYE_PRECISION_CPC_PLATE_CARRIER_GOONS_EDITION = "628b9c7d45122232a872358f", + VEST_CSA_CHEST_RIG_BLACK = "6034d0230ca681766b6a0fb5", + VEST_DIRECT_ACTION_THUNDERBOLT_COMPACT_CHEST_RIG_SHADOW_GREY = "5f5f41f56760b4138443b352", + VEST_DIY_IDEA_CHEST_RIG = "5fd4c4fa16cac650092f6771", + VEST_DYNAFORCE_TRITON_M43A_CHEST_HARNESS_BLACK = "5ca20abf86f77418567a43f2", + VEST_EAGLE_ALLIED_INDUSTRIES_MBSS_PLATE_CARRIER_COYOTE_BROWN = "64a5366719bab53bd203bf33", + VEST_EAGLE_INDUSTRIES_MMAC_PLATE_CARRIER_RANGER_GREEN = "61bc85697113f767765c7fe7", + VEST_ECLIPSE_RBAVAF_PLATE_CARRIER_RANGER_GREEN = "628dc750b910320f4c27a732", + VEST_FIRSTSPEAR_STRANDHOGG_PLATE_CARRIER_RANGER_GREEN = "61bcc89aef0f505f0c6cd0fc", + VEST_GEAR_CRAFT_GCBSSMK1_CHEST_RIG_ATACS_FG = "5fd4c60f875c30179f5d04c2", + VEST_HALEY_STRATEGIC_D3CRX_CHEST_HARNESS_RANGER_GREEN = "5d5d85c586f774279a21cbdb", + VEST_LBT1961A_LOAD_BEARING_CHEST_RIG_GOONS_EDITION = "628baf0b967de16aab5a4f36", + VEST_LBT1961A_LOAD_BEARING_CHEST_RIG_MAS_GREY = "5e9db13186f7742f845ee9d3", + VEST_NPP_KLASS_BAGARIY_PLATE_CARRIER_DIGITAL_FLORA = "628d0618d1ba6e4fa07ce5a4", + VEST_POYASA_POYASB_GEAR_RIG = "5c0e6a1586f77404597b4965", + VEST_SCAV = "572b7adb24597762ae139821", + VEST_SECURITY = "5fd4c5477a8d854fa0105061", + VEST_SHELLBACK_TACTICAL_BANSHEE_PLATE_CARRIER_ATACS_AU = "639343fce101f4caa40a4ef3", + VEST_SOE_MICRO_RIG_MULTICAM = "5d5d8ca986f7742798716522", + VEST_SPIRITUS_SYSTEMS_BANK_ROBBER_CHEST_RIG_MULTICAM_BLACK = "5e4abc1f86f774069619fbaa", + VEST_SPLAV_TARZAN_M22_CHEST_RIG_SMOG = "5e4abfed86f77406a2713cf7", + VEST_SS_PRECISION_PLATEFRAME_PLATE_CARRIER_GOONS_EDITION = "628b9784bcf6e2659e09b8a2", + VEST_STICH_PROFI_CHEST_RIG_MK2_ASSAULT_ATACS_FG = "60a621c49c197e4e8c4455e6", + VEST_STICH_PROFI_CHEST_RIG_MK2_RECON_ATACS_FG = "60a6220e953894617404b00a", + VEST_TASMANIAN_TIGER_SK_PLATE_CARRIER_MULTICAM_BLACK = "628cd624459354321c4b7fa2", + VEST_TYPE_56_CHICOM_CHEST_HARNESS = "64be7110bf597ba84a0a41ea", + VEST_UMKA_M33SET1_HUNTER_VEST_OLIVE_DRAB = "6034cf5fffd42c541047f72e", + VEST_UMTBS_6SH112_SCOUTSNIPER_CHEST_RIG_DIGITAL_FLORA = "5929a2a086f7744f4b234d43", + VEST_VELOCITY_SYSTEMS_MPPV_MULTIPURPOSE_PATROL_VEST_WOLF_GREY = "5df8a42886f77412640e2e75", + VEST_WARTECH_MK3_TV104_CHEST_RIG_MULTICAM = "5ab8dab586f77441cd04f2a2", + VEST_WARTECH_TV109_TV106_CHEST_RIG_ATACS_FG = "59e7643b86f7742cbf2c109a", + VEST_WARTECH_TV110_PLATE_CARRIER_COYOTE = "5c0e746986f7741453628fe5", + VEST_WARTECH_TV115_PLATE_CARRIER_OLIVE_DRAB = "64a536392d2c4e6e970f4121", + VEST_ZULU_NYLON_GEAR_M4_REDUCED_SIGNATURE_CHEST_RIG_RANGER_GREEN = "64be7095047e826eae02b0c1", + VISORS_6B34_ANTIFRAGMENTATION_GLASSES = "5b432be65acfc433000ed01f", + VISORS_ANTIFRAGMENTATION_GLASSES = "59e770b986f7742cbd762754", + VISORS_CROSSBOW_TACTICAL_GLASSES = "5d5fca1ea4b93635fd598c07", + VISORS_DUNDUKK_SPORT_SUNGLASSES = "5aa2b986e5b5b00014028f4c", + VISORS_GAS_WELDER_SAFETY_GOGGLES = "61c18d83b00456371a66814b", + VISORS_JOHNB_LIQUID_DNB_GLASSES = "62a09e410b9d3c46de5b6e78", + VISORS_NPP_KLASS_CONDOR_GLASSES = "603409c80ca681766b6a0fb2", + VISORS_OAKLEY_SI_BATWOLF_GLASSES = "62a61c988ec41a51b34758d5", + VISORS_OAKLEY_SI_GASCAN_GLASSES = "5d6d2e22a4b9361bd5780d05", + VISORS_OAKLEY_SI_M_FRAME_SAFETY_GLASSES = "5c1a1cc52e221602b3136e3d", + VISORS_PYRAMEX_PROXIMITY_SAFETY_GLASSES = "5c0d32fcd174af02a1659c75", + VISORS_RAYBENCH_AVIATOR_GLASSES = "5d6d2ef3a4b93618084f58bd", + VISORS_RAYBENCH_HIPSTER_RESERVE_SUNGLASSES = "5aa2b9aee5b5b00015693121", + VISORS_ROUND_FRAME_SUNGLASSES = "5aa2b923e5b5b000137b7589", + VISORS_TACTICAL_GLASSES = "557ff21e4bdc2d89578b4586", + VISORS_TWITCH_RIVALS_2020_GLASSES = "5e71f70186f77429ee09f183" +} diff --git a/TypeScript/24WebSocket/types/models/enums/MemberCategory.d.ts b/TypeScript/24WebSocket/types/models/enums/MemberCategory.d.ts index a81380e..c58497d 100644 --- a/TypeScript/24WebSocket/types/models/enums/MemberCategory.d.ts +++ b/TypeScript/24WebSocket/types/models/enums/MemberCategory.d.ts @@ -9,5 +9,6 @@ export declare enum MemberCategory { CHAT_MODERATOR_WITH_PERMANENT_BAN = 64, UNIT_TEST = 128, SHERPA = 256, - EMISSARY = 512 + EMISSARY = 512, + UNHEARD = 1024 } diff --git a/TypeScript/24WebSocket/types/models/enums/ModSpawn.d.ts b/TypeScript/24WebSocket/types/models/enums/ModSpawn.d.ts index 445b5ab..93ecbb7 100644 --- a/TypeScript/24WebSocket/types/models/enums/ModSpawn.d.ts +++ b/TypeScript/24WebSocket/types/models/enums/ModSpawn.d.ts @@ -1,5 +1,8 @@ export declare enum ModSpawn { + /** Chosen mod should be the tpl from the default weapon template */ DEFAULT_MOD = 0, + /** Normal behaviour */ SPAWN = 1, + /** Item should not be chosen */ SKIP = 2 } diff --git a/TypeScript/24WebSocket/types/models/enums/Money.d.ts b/TypeScript/24WebSocket/types/models/enums/Money.d.ts index 0d39613..97b0d14 100644 --- a/TypeScript/24WebSocket/types/models/enums/Money.d.ts +++ b/TypeScript/24WebSocket/types/models/enums/Money.d.ts @@ -1,5 +1,6 @@ export declare enum Money { ROUBLES = "5449016a4bdc2d6f028b456f", EUROS = "569668774bdc2da2298b4568", - DOLLARS = "5696686a4bdc2da3298b456a" + DOLLARS = "5696686a4bdc2da3298b456a", + GP = "5d235b4d86f7742e017bc88a" } diff --git a/TypeScript/24WebSocket/types/models/enums/NotificationEventType.d.ts b/TypeScript/24WebSocket/types/models/enums/NotificationEventType.d.ts index 51f0d4e..a16a221 100644 --- a/TypeScript/24WebSocket/types/models/enums/NotificationEventType.d.ts +++ b/TypeScript/24WebSocket/types/models/enums/NotificationEventType.d.ts @@ -1,9 +1,15 @@ export declare enum NotificationEventType { + ASSORTMENT_UNLOCK_RULE = "AssortmentUnlockRule", + EXAMINE_ITEMS = "ExamineItems", + EXAMINE_ALL_ITEMS = "ExamineAllItems", + FORCE_LOGOUT = "ForceLogout", RAGFAIR_OFFER_SOLD = "RagfairOfferSold", + RAGFAIR_NEW_RATING = "RagfairNewRating", RAGFAIR_RATING_CHANGE = "RagfairRatingChange", CHAT_MESSAGE_RECEIVED = "new_message", PING = "ping", - TRADER_SUPPLY = "TraderSupply", + TRADER_SALES_SUM = "TraderSalesSum", + TRADER_SUPPLY = "trader_supply", TRADER_STANDING = "TraderStanding", UNLOCK_TRADER = "UnlockTrader", GROUP_MATCH_RAID_SETTINGS = "groupMatchRaidSettings", @@ -18,11 +24,17 @@ export declare enum NotificationEventType { GROUP_MATCH_WAS_REMOVED = "groupMatchWasRemoved", GROUP_MATCH_USER_BAD_VERSION = "groupMatchUserHasBadVersion", USER_CONFIRMED = "userConfirmed", + USER_MATCHED = "UserMatched", + USER_MATCH_OVER = "userMatchOver", CHANNEL_DELETED = "channel_deleted", FRIEND_LIST_REQUEST_ACCEPTED = "friendListRequestAccept", FRIEND_LIST_REQUEST_DECLINED = "friendListRequestDecline", FRIEND_LIST_NEW_REQUEST = "friendListNewRequest", FRIEND_LIST_REMOVED_FROM_FRIEND_LIST = "youAreRemovedFromFriendList", YOU_ARE_ADDED_TO_IGNORE_LIST = "YouWereAddedToIgnoreList", - YOU_ARE_REMOVED_FROM_IGNORE_LIST = "youAreRemoveFromIgnoreList" + YOU_ARE_REMOVED_FROM_IGNORE_LIST = "youAreRemoveFromIgnoreList", + PROFILE_LOCK_TIMER = "ProfileLockTimer", + STASH_ROWS = "StashRows", + SKILL_POINTS = "SkillPoints", + TOURNAMENT_WARNING = "tournamentWarning" } diff --git a/TypeScript/24WebSocket/types/models/enums/RagfairSort.d.ts b/TypeScript/24WebSocket/types/models/enums/RagfairSort.d.ts index 798a5e7..a799ac6 100644 --- a/TypeScript/24WebSocket/types/models/enums/RagfairSort.d.ts +++ b/TypeScript/24WebSocket/types/models/enums/RagfairSort.d.ts @@ -1,5 +1,6 @@ export declare enum RagfairSort { ID = 0, + BARTER = 2, RATING = 3, OFFER_TITLE = 4, PRICE = 5, diff --git a/TypeScript/24WebSocket/types/models/enums/SkillTypes.d.ts b/TypeScript/24WebSocket/types/models/enums/SkillTypes.d.ts index c41ce6f..4ff4799 100644 --- a/TypeScript/24WebSocket/types/models/enums/SkillTypes.d.ts +++ b/TypeScript/24WebSocket/types/models/enums/SkillTypes.d.ts @@ -52,5 +52,19 @@ export declare enum SkillTypes { USEC_DEEP_WEAPON_MOD = "UsecDeepweaponmodding_Settings", USEC_LONG_RANGE_OPTICS = "UsecLongrangeoptics_Settings", USEC_NEGOTIATIONS = "UsecNegotiations", - USEC_TACTICS = "UsecTactics" + USEC_TACTICS = "UsecTactics", + PISTOL = "Pistol", + REVOLVER = "Revolver", + SMG = "SMG", + ASSAULT = "Assault", + SHOTGUN = "Shotgun", + SNIPER = "Sniper", + LMG = "LMG", + HMG = "HMG", + LAUNCHER = "Launcher", + ATTACHED_LAUNCHER = "AttachedLauncher", + MISC = "Misc", + DMR = "DMR", + DRAW_MASTER = "DrawMaster", + AIM_MASTER = "AimMaster" } diff --git a/TypeScript/24WebSocket/types/models/enums/Traders.d.ts b/TypeScript/24WebSocket/types/models/enums/Traders.d.ts index f7d340a..10e5f4b 100644 --- a/TypeScript/24WebSocket/types/models/enums/Traders.d.ts +++ b/TypeScript/24WebSocket/types/models/enums/Traders.d.ts @@ -8,5 +8,6 @@ export declare enum Traders { RAGMAN = "5ac3b934156ae10c4430e83c", JAEGER = "5c0647fdd443bc2504c2d371", LIGHTHOUSEKEEPER = "638f541a29ffd1183d187f57", - BTR = "656f0f98d80a697f855d34b1" + BTR = "656f0f98d80a697f855d34b1", + REF = "6617beeaa9cfa777ca915b7c" } diff --git a/TypeScript/24WebSocket/types/models/enums/WeaponTypes.d.ts b/TypeScript/24WebSocket/types/models/enums/WeaponTypes.d.ts deleted file mode 100644 index b01dd66..0000000 --- a/TypeScript/24WebSocket/types/models/enums/WeaponTypes.d.ts +++ /dev/null @@ -1,172 +0,0 @@ -export declare enum Weapons127x55 { - ASH_12 = "5cadfbf7ae92152ac412eeef", - RSH_12 = "633ec7c2a6918cb895019c6c" -} -export declare enum Weapons86x70 { - MK_18 = "5fc22d7c187fea44d52eda44", - AXMC = "627e14b21713922ded6f2c15" -} -export declare enum Weapons9x39 { - AS_VAL = "57c44b372459772d2b39b8ce", - VSS_VINTOREZ = "57838ad32459774a17445cd2", - KBP_9A_91 = "644674a13d52156624001fbc", - VSK_94 = "645e0c6b3b381ede770e1cc9" -} -export declare enum Weapons762x54R { - SVDS = "5c46fbd72e2216398b5a8c9c", - MP_18 = "61f7c9e189e6fb1a5e3ea78d", - MOSIN_INFANTRY = "5bfd297f0db834001a669119", - MOSIN_SNIPER = "5ae08f0a5acfc408fb1398a1", - SV_98 = "55801eed4bdc2d89578b4588", - AVT_40 = "6410733d5dd49d77bd07847e", - SVT_40 = "643ea5b23db6f9f57107d9fd", - PKM = "64637076203536ad5600c990", - PKP = "64ca3d3954fc657e230529cc" -} -export declare enum Weapons762x51 { - VPO_101 = "5c501a4d2e221602b412b540", - DT_MDR_762 = "5dcbd56fdbd3d91b3e5468d5", - SA_58 = "5b0bbe4e5acfc40dc528a72d", - SCARH_BLACK = "6183afd850224f204c1da514", - SCARH_FDE = "6165ac306ef05c2ce828ef74", - HK_G28 = "6176aca650224f204c1da3fb", - M1A = "5aafa857e5b5b00018480968", - RFB = "5f2a9575926fd9352339381f", - RSASS = "5a367e5dc4a282000e49738f", - SR_25 = "5df8ce05b11454561e39243b", - DVL_10 = "588892092459774ac91d4b11", - M700 = "5bfea6e90db834001b7347f3", - T5000M = "5df24cf80dee1b22f862e9bc" -} -export declare enum Weapons366TKM { - VPO_209 = "59e6687d86f77411d949b251", - VPO_215 = "5de652c31b7e3716273428be" -} -export declare enum Weapons762x39 { - OP_SKS = "587e02ff24597743df3deaeb", - SKS = "574d967124597745970e7c94", - AK_103 = "5ac66d2e5acfc43b321d4b53", - AK_104 = "5ac66d725acfc43b321d4b60", - AKM = "59d6088586f774275f37482f", - AKMN = "5a0ec13bfcdbcb00165aa685", - AKMS = "59ff346386f77477562ff5e2", - AKMSN = "5abcbc27d8ce8700182eceeb", - MK47_MUTANT = "606587252535c57a13424cfd", - RD_704 = "628a60ae6b1d481ff772e9c8", - VPO_136 = "59e6152586f77473dc057aa1", - RPD = "6513ef33e06849f06c0957ca", - RPDN = "65268d8ecb944ff1e90ea385" -} -export declare enum Weapons762x35 { - MCX = "5fbcc1d9016cce60e8341ab3" -} -export declare enum Weapons556x45 { - ADAR_2_15 = "5c07c60e0db834002330051f", - AK_101 = "5ac66cb05acfc40198510a10", - AK_102 = "5ac66d015acfc400180ae6e4", - DT_MDR_556 = "5c488a752e221602b412af63", - HK_416A5 = "5bb2475ed4351e00853264e3", - HK_G36 = "623063e994fc3f7b302a9696", - M4A1 = "5447a9cd4bdc2dbd208b4567", - SCARL_BLACK = "6184055050224f204c1da540", - SCARL_FDE = "618428466ef05c2ce828f218", - TX15_DML = "5d43021ca4b9362eab4b5e25", - AUG_A1 = "62e7c4fba689e8c9c50dfc38", - AUG_A3 = "63171672192e68c5460cebc5" -} -export declare enum Weapons545x39 { - AK_105 = "5ac66d9b5acfc4001633997a", - AK_74 = "5bf3e03b0db834001d2c4a9c", - AK_74M = "5ac4cd105acfc40016339859", - AK_74N = "5644bd2b4bdc2d3b4c8b4572", - AKS_74 = "5bf3e0490db83400196199af", - AKS_74N = "5ab8e9fcd8ce870019439434", - AKS_74U = "57dc2fa62459775949412633", - AKS_74UB = "5839a40f24597726f856b511", - AKS_74UN = "583990e32459771419544dd2", - SAG_AK = "628b5638ad252a16da6dd245", - SAG_AK_SHORT = "628b9c37a733087d0d7fe84b", - RPK_16 = "5beed0f50db834001c062b12", - AK_12 = "6499849fc93611967b034949" -} -export declare enum Weapons57x28FN { - FN_57_BLACK = "5d3eb3b0a4b93615055e84d2", - FN_57_FDE = "5d67abc1a4b93614ec50137f", - FN_P90 = "5cc82d76e24e8d00134b4b83" -} -export declare enum Weapons46x30HK { - MP7A1 = "5ba26383d4351e00334c93d9", - MP7A2 = "5bd70322209c4d00d7167b8f" -} -export declare enum Weapons1143x23 { - M1911A1 = "5e81c3cbac2bb513793cdc75", - M45A1 = "5f36a0e5fbf956000b716b65", - USP45 = "6193a720f8ee7e52e42109ed", - UMP45 = "5fc3e272f8b6a877a729eac5", - VECTOR45 = "5fb64bc92b1b027b1f50bcf2" -} -export declare enum Weapons9x33R { - CR_50DS = "61a4c8884f95bc3b2c5dc96f" -} -export declare enum Weapons9x21 { - SR_1MP = "59f98b4986f7746f546d2cef", - SR_2M = "62e14904c2699c0ec93adc47" -} -export declare enum Weapons9x19 { - GLOCK_17 = "5a7ae0c351dfba0017554310", - GLOCK_18C = "5b1fa9b25acfc40018633c01", - M9A3 = "5cadc190ae921500103bb3b6", - MP_443 = "576a581d2459771e7b1bc4f1", - P226R = "56d59856d2720bd8418b456a", - PL_15 = "602a9740da11d6478d5a06dc", - CR_200DS = "624c2e8614da335f1e034d8c", - MP5 = "5926bb2186f7744b1c6c6e60", - MP5K = "5d2f0d8048f0356c925bc3b0", - MP9 = "5e00903ae9dc277128008b87", - MP9_N = "5de7bd7bfd6b4e6e2276dc25", - MPX = "58948c8e86f77409493f7266", - PP_19_01 = "59984ab886f7743e98271174", - SAIGA_9 = "59f9cabd86f7743a10721f46", - STM_9 = "60339954d62c9b14ed777c06", - VECTOR_9MM = "5fc3f2d5900b1d5091531e57", - GLOCK_19X = "63088377b5cd696784087147" -} -export declare enum Weapons9x18 { - APB = "5abccb7dd8ce87001773e277", - APS = "5a17f98cfcdbcb0980087290", - PB_SILENCED = "56e0598dd2720bb5668b45a6", - PM = "5448bd6b4bdc2dfc2f8b4569", - PM_T = "579204f224597773d619e051", - PP9_KLIN = "57f4c844245977379d5c14d1", - PP91_KEDR = "57d14d2524597714373db789", - PP91_KEDRB = "57f3c6bd24597738e730fa2f" -} -export declare enum Weapons762x25 { - TT = "571a12c42459771f627b58a0", - TT_GOLD = "5b3b713c5acfc4330140bd8d", - PPSH_41 = "5ea03f7400685063ec28bfa8" -} -export declare enum Weapons12Gauge { - M3_SUPER90 = "6259b864ebedf17603599e88", - M590A1 = "5e870397991fd70db46995c8", - M870 = "5a7828548dc32e5a9c28b516", - MP_133 = "54491c4f4bdc2db1078b4568", - MP_153 = "56dee2bdd2720bc8328b4567", - MP_155 = "606dae0ab0e443224b421bb7", - MP_43_1C = "5580223e4bdc2d1c128b457f", - MTS_255_12 = "60db29ce99594040e04c4a27", - SAIGA_12GA = "576165642459773c7a400233" -} -export declare enum Weapons20Gauge { - TOZ_106 = "5a38e6bac4a2826c6e06d79b" -} -export declare enum Weapons23x75 { - KS_23M = "5e848cc2988a8701445df1e8" -} -export declare enum Weapons68x51 { - MCX_SPEAR = "65290f395ae2ae97b80fdf2d" -} -export declare enum Weapons40x46 { - M32A1 = "6275303a9f372d6ea97f9ec7", - FN40GL = "5e81ebcd8e146c7080625e15" -} diff --git a/TypeScript/24WebSocket/types/models/enums/Weapons.d.ts b/TypeScript/24WebSocket/types/models/enums/Weapons.d.ts new file mode 100644 index 0000000..178bc68 --- /dev/null +++ b/TypeScript/24WebSocket/types/models/enums/Weapons.d.ts @@ -0,0 +1,141 @@ +export declare enum Weapons { + ASSAULTCARBINE_762X39_OP_SKS = "587e02ff24597743df3deaeb", + ASSAULTCARBINE_762X39_SKS = "574d967124597745970e7c94", + ASSAULTCARBINE_762X51_VPO_101_VEPR_HUNTER = "5c501a4d2e221602b412b540", + ASSAULTCARBINE_762X54R_AVT_40 = "6410733d5dd49d77bd07847e", + ASSAULTCARBINE_762X54R_SVT_40 = "643ea5b23db6f9f57107d9fd", + ASSAULTCARBINE_9X39_9A_91 = "644674a13d52156624001fbc", + ASSAULTCARBINE_9X39_AS_VAL = "57c44b372459772d2b39b8ce", + ASSAULTCARBINE_9X39_VSK_94 = "645e0c6b3b381ede770e1cc9", + ASSAULTRIFLE_127X55_ASH_12 = "5cadfbf7ae92152ac412eeef", + ASSAULTRIFLE_366TKM_VPO_209 = "59e6687d86f77411d949b251", + ASSAULTRIFLE_545X39_AKS_74 = "5bf3e0490db83400196199af", + ASSAULTRIFLE_545X39_AKS_74N = "5ab8e9fcd8ce870019439434", + ASSAULTRIFLE_545X39_AKS_74U = "57dc2fa62459775949412633", + ASSAULTRIFLE_545X39_AKS_74UB = "5839a40f24597726f856b511", + ASSAULTRIFLE_545X39_AKS_74UN = "583990e32459771419544dd2", + ASSAULTRIFLE_545X39_AK_105 = "5ac66d9b5acfc4001633997a", + ASSAULTRIFLE_545X39_AK_12 = "6499849fc93611967b034949", + ASSAULTRIFLE_545X39_AK_545 = "628b5638ad252a16da6dd245", + ASSAULTRIFLE_545X39_AK_545_SHORT = "628b9c37a733087d0d7fe84b", + ASSAULTRIFLE_545X39_AK_74 = "5bf3e03b0db834001d2c4a9c", + ASSAULTRIFLE_545X39_AK_74M = "5ac4cd105acfc40016339859", + ASSAULTRIFLE_545X39_AK_74N = "5644bd2b4bdc2d3b4c8b4572", + ASSAULTRIFLE_556X45_ADAR_2_15 = "5c07c60e0db834002330051f", + ASSAULTRIFLE_556X45_AK_101 = "5ac66cb05acfc40198510a10", + ASSAULTRIFLE_556X45_AK_102 = "5ac66d015acfc400180ae6e4", + ASSAULTRIFLE_556X45_AUG_A1 = "62e7c4fba689e8c9c50dfc38", + ASSAULTRIFLE_556X45_AUG_A3 = "63171672192e68c5460cebc5", + ASSAULTRIFLE_556X45_G36 = "623063e994fc3f7b302a9696", + ASSAULTRIFLE_556X45_HK_416A5 = "5bb2475ed4351e00853264e3", + ASSAULTRIFLE_556X45_M4A1 = "5447a9cd4bdc2dbd208b4567", + ASSAULTRIFLE_556X45_MDR = "5c488a752e221602b412af63", + ASSAULTRIFLE_556X45_MK_16 = "6184055050224f204c1da540", + ASSAULTRIFLE_556X45_MK_16_FDE = "618428466ef05c2ce828f218", + ASSAULTRIFLE_556X45_TX_15_DML = "5d43021ca4b9362eab4b5e25", + ASSAULTRIFLE_68X51_SPEAR_68 = "65290f395ae2ae97b80fdf2d", + ASSAULTRIFLE_762X35_MCX_300_BLK = "5fbcc1d9016cce60e8341ab3", + ASSAULTRIFLE_762X39_AKM = "59d6088586f774275f37482f", + ASSAULTRIFLE_762X39_AKMN = "5a0ec13bfcdbcb00165aa685", + ASSAULTRIFLE_762X39_AKMS = "59ff346386f77477562ff5e2", + ASSAULTRIFLE_762X39_AKMSN = "5abcbc27d8ce8700182eceeb", + ASSAULTRIFLE_762X39_AK_103 = "5ac66d2e5acfc43b321d4b53", + ASSAULTRIFLE_762X39_AK_104 = "5ac66d725acfc43b321d4b60", + ASSAULTRIFLE_762X39_MK47 = "606587252535c57a13424cfd", + ASSAULTRIFLE_762X39_RD_704 = "628a60ae6b1d481ff772e9c8", + ASSAULTRIFLE_762X39_VPO_136_VEPR_KM = "59e6152586f77473dc057aa1", + ASSAULTRIFLE_762X51_MDR = "5dcbd56fdbd3d91b3e5468d5", + ASSAULTRIFLE_762X51_MK_17 = "6183afd850224f204c1da514", + ASSAULTRIFLE_762X51_MK_17_FDE = "6165ac306ef05c2ce828ef74", + ASSAULTRIFLE_762X51_SA_58 = "5b0bbe4e5acfc40dc528a72d", + ASSAULTRIFLE_9X18PM_MASTER_HAND = "5ae083b25acfc4001a5fc702", + FLARE_26X75_FLARE_WHITE = "62178be9d0050232da3485d9", + FLARE_26X75_GREEN = "6217726288ed9f0845317459", + FLARE_26X75_RED = "62178c4d4ecf221597654e3d", + FLARE_26X75_YELLOW = "624c0b3340357b5f566e8766", + GRENADELAUNCHER_40MMRU_FN40GL = "639af924d0446708ee62294e", + GRENADELAUNCHER_40X46_FN40GL = "5e81ebcd8e146c7080625e15", + GRENADELAUNCHER_40X46_FN40GL_2 = "639c3fbbd0446708ee622ee9", + MACHINEGUN_30X29_AGS_30 = "5d52cc5ba4b9367408500062", + MACHINEGUN_545X39_NSV_UTYOS = "5cdeb229d7f00c000e7ce174", + MACHINEGUN_545X39_RPK_16 = "5beed0f50db834001c062b12", + MACHINEGUN_762X39_RPD = "6513ef33e06849f06c0957ca", + MACHINEGUN_762X39_RPDN = "65268d8ecb944ff1e90ea385", + MACHINEGUN_762X54R_PKM = "64637076203536ad5600c990", + MACHINEGUN_762X54R_PKP = "64ca3d3954fc657e230529cc", + MACHINEGUN_762X54R_PKTM = "657857faeff4c850222dff1b", + MARKSMANRIFLE_762X51_G28 = "6176aca650224f204c1da3fb", + MARKSMANRIFLE_762X51_M1A = "5aafa857e5b5b00018480968", + MARKSMANRIFLE_762X51_RFB = "5f2a9575926fd9352339381f", + MARKSMANRIFLE_762X51_RSASS = "5a367e5dc4a282000e49738f", + MARKSMANRIFLE_762X51_SR_25 = "5df8ce05b11454561e39243b", + MARKSMANRIFLE_762X54R_SVDS = "5c46fbd72e2216398b5a8c9c", + MARKSMANRIFLE_86X70_MK_18_MJLNIR = "5fc22d7c187fea44d52eda44", + MARKSMANRIFLE_9X39_VSS_VINTOREZ = "57838ad32459774a17445cd2", + PISTOL_20X1MM_BLICKY = "66015072e9f84d5680039678", + PISTOL_45ACP_M1911A1 = "5e81c3cbac2bb513793cdc75", + PISTOL_45ACP_M45A1 = "5f36a0e5fbf956000b716b65", + PISTOL_45ACP_USP_45 = "6193a720f8ee7e52e42109ed", + PISTOL_57X28_FN_5_7 = "5d3eb3b0a4b93615055e84d2", + PISTOL_57X28_FN_5_7_FDE = "5d67abc1a4b93614ec50137f", + PISTOL_762X25TT_TT = "571a12c42459771f627b58a0", + PISTOL_762X25TT_TT_GOLD_GOLDEN = "5b3b713c5acfc4330140bd8d", + PISTOL_9X18PM_APB = "5abccb7dd8ce87001773e277", + PISTOL_9X18PM_APS = "5a17f98cfcdbcb0980087290", + PISTOL_9X18PM_PB = "56e0598dd2720bb5668b45a6", + PISTOL_9X18PM_PM = "5448bd6b4bdc2dfc2f8b4569", + PISTOL_9X18PM_PM_T = "579204f224597773d619e051", + PISTOL_9X19_GLOCK_17 = "5a7ae0c351dfba0017554310", + PISTOL_9X19_GLOCK_18C = "5b1fa9b25acfc40018633c01", + PISTOL_9X19_GLOCK_19X = "63088377b5cd696784087147", + PISTOL_9X19_M9A3 = "5cadc190ae921500103bb3b6", + PISTOL_9X19_MP_443_GRACH = "576a581d2459771e7b1bc4f1", + PISTOL_9X19_P226R = "56d59856d2720bd8418b456a", + PISTOL_9X19_PL_15 = "602a9740da11d6478d5a06dc", + PISTOL_9X21_SR_1MP = "59f98b4986f7746f546d2cef", + REVOLVER_127X55_RSH_12 = "633ec7c2a6918cb895019c6c", + REVOLVER_12G_MTS_255_12 = "60db29ce99594040e04c4a27", + REVOLVER_40X46_MSGL = "6275303a9f372d6ea97f9ec7", + REVOLVER_9X19_CR_200DS = "624c2e8614da335f1e034d8c", + REVOLVER_9X33R_CR_50DS = "61a4c8884f95bc3b2c5dc96f", + SHOTGUN_12G_590A1 = "5e870397991fd70db46995c8", + SHOTGUN_12G_M3_SUPER_90 = "6259b864ebedf17603599e88", + SHOTGUN_12G_M870 = "5a7828548dc32e5a9c28b516", + SHOTGUN_12G_MP_133 = "54491c4f4bdc2db1078b4568", + SHOTGUN_12G_MP_153 = "56dee2bdd2720bc8328b4567", + SHOTGUN_12G_MP_155 = "606dae0ab0e443224b421bb7", + SHOTGUN_12G_MP_43_1C = "5580223e4bdc2d1c128b457f", + SHOTGUN_12G_SAIGA_12K = "576165642459773c7a400233", + SHOTGUN_12G_SAWED_OFF = "64748cb8de82c85eaf0a273a", + SHOTGUN_20G_TOZ_106 = "5a38e6bac4a2826c6e06d79b", + SHOTGUN_23X75_KS_23M = "5e848cc2988a8701445df1e8", + SHOTGUN_762X54R_MP_18 = "61f7c9e189e6fb1a5e3ea78d", + SIGNALPISTOL_26X75_SP_81 = "620109578d82e67e7911abf2", + SMG_45ACP_UMP_45 = "5fc3e272f8b6a877a729eac5", + SMG_45ACP_VECTOR_45ACP = "5fb64bc92b1b027b1f50bcf2", + SMG_46X30_MP7A1 = "5ba26383d4351e00334c93d9", + SMG_46X30_MP7A2 = "5bd70322209c4d00d7167b8f", + SMG_57X28_P90 = "5cc82d76e24e8d00134b4b83", + SMG_762X25TT_PPSH41 = "5ea03f7400685063ec28bfa8", + SMG_9X18PMM_PP_9_KLIN = "57f4c844245977379d5c14d1", + SMG_9X18PM_PP_91_01_KEDR_B = "57f3c6bd24597738e730fa2f", + SMG_9X18PM_PP_91_KEDR = "57d14d2524597714373db789", + SMG_9X19_MP5K_N = "5d2f0d8048f0356c925bc3b0", + SMG_9X19_MP5_NAVY_3_ROUND_BURST = "5926bb2186f7744b1c6c6e60", + SMG_9X19_MP9 = "5e00903ae9dc277128008b87", + SMG_9X19_MP9_N = "5de7bd7bfd6b4e6e2276dc25", + SMG_9X19_MPX = "58948c8e86f77409493f7266", + SMG_9X19_PP_19_01 = "59984ab886f7743e98271174", + SMG_9X19_SAIGA_9 = "59f9cabd86f7743a10721f46", + SMG_9X19_STM_9 = "60339954d62c9b14ed777c06", + SMG_9X19_VECTOR_9X19 = "5fc3f2d5900b1d5091531e57", + SMG_9X21_SR_2M = "62e14904c2699c0ec93adc47", + SNIPERRIFLE_366TKM_VPO_215_GORNOSTAY = "5de652c31b7e3716273428be", + SNIPERRIFLE_762X51_DVL_10 = "588892092459774ac91d4b11", + SNIPERRIFLE_762X51_M700 = "5bfea6e90db834001b7347f3", + SNIPERRIFLE_762X51_T_5000M = "5df24cf80dee1b22f862e9bc", + SNIPERRIFLE_762X54R_MOSIN_INFANTRY = "5bfd297f0db834001a669119", + SNIPERRIFLE_762X54R_MOSIN_SNIPER = "5ae08f0a5acfc408fb1398a1", + SNIPERRIFLE_762X54R_SV_98 = "55801eed4bdc2d89578b4588", + SNIPERRIFLE_86X70_AXMC = "627e14b21713922ded6f2c15" +} diff --git a/TypeScript/24WebSocket/types/models/enums/WildSpawnTypeNumber.d.ts b/TypeScript/24WebSocket/types/models/enums/WildSpawnTypeNumber.d.ts index 80d737e..19d0062 100644 --- a/TypeScript/24WebSocket/types/models/enums/WildSpawnTypeNumber.d.ts +++ b/TypeScript/24WebSocket/types/models/enums/WildSpawnTypeNumber.d.ts @@ -49,8 +49,8 @@ export declare enum WildSpawnTypeNumber { SPIRITSPRING = 48, PMCBEAR = 49, PMCUSEC = 50, - skier = 51, - peacemaker = 52, + SKIER = 51, + PEACEMAKER = 52, SPTUSEC = 100, SPTBEAR = 101 } diff --git a/TypeScript/24WebSocket/types/models/external/IPostAkiLoadMod.d.ts b/TypeScript/24WebSocket/types/models/external/IPostAkiLoadMod.d.ts deleted file mode 100644 index 87a2ab0..0000000 --- a/TypeScript/24WebSocket/types/models/external/IPostAkiLoadMod.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import type { DependencyContainer } from "tsyringe"; -export interface IPostAkiLoadMod { - postAkiLoad(container: DependencyContainer): void; -} diff --git a/TypeScript/24WebSocket/types/models/external/IPostAkiLoadModAsync.d.ts b/TypeScript/24WebSocket/types/models/external/IPostAkiLoadModAsync.d.ts deleted file mode 100644 index ea57e2b..0000000 --- a/TypeScript/24WebSocket/types/models/external/IPostAkiLoadModAsync.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import type { DependencyContainer } from "tsyringe"; -export interface IPostAkiLoadModAsync { - postAkiLoadAsync(container: DependencyContainer): Promise; -} diff --git a/TypeScript/24WebSocket/types/models/external/IPostSptLoadMod.d.ts b/TypeScript/24WebSocket/types/models/external/IPostSptLoadMod.d.ts new file mode 100644 index 0000000..5ef9766 --- /dev/null +++ b/TypeScript/24WebSocket/types/models/external/IPostSptLoadMod.d.ts @@ -0,0 +1,4 @@ +import type { DependencyContainer } from "tsyringe"; +export interface IPostSptLoadMod { + postSptLoad(container: DependencyContainer): void; +} diff --git a/TypeScript/24WebSocket/types/models/external/IPostSptLoadModAsync.d.ts b/TypeScript/24WebSocket/types/models/external/IPostSptLoadModAsync.d.ts new file mode 100644 index 0000000..7778d96 --- /dev/null +++ b/TypeScript/24WebSocket/types/models/external/IPostSptLoadModAsync.d.ts @@ -0,0 +1,4 @@ +import type { DependencyContainer } from "tsyringe"; +export interface IPostSptLoadModAsync { + postSptLoadAsync(container: DependencyContainer): Promise; +} diff --git a/TypeScript/24WebSocket/types/models/external/IPreAkiLoadMod.d.ts b/TypeScript/24WebSocket/types/models/external/IPreAkiLoadMod.d.ts deleted file mode 100644 index b3bb041..0000000 --- a/TypeScript/24WebSocket/types/models/external/IPreAkiLoadMod.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import type { DependencyContainer } from "tsyringe"; -export interface IPreAkiLoadMod { - preAkiLoad(container: DependencyContainer): void; -} diff --git a/TypeScript/24WebSocket/types/models/external/IPreAkiLoadModAsync.d.ts b/TypeScript/24WebSocket/types/models/external/IPreAkiLoadModAsync.d.ts deleted file mode 100644 index 4c0c984..0000000 --- a/TypeScript/24WebSocket/types/models/external/IPreAkiLoadModAsync.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import type { DependencyContainer } from "tsyringe"; -export interface IPreAkiLoadModAsync { - preAkiLoadAsync(container: DependencyContainer): Promise; -} diff --git a/TypeScript/24WebSocket/types/models/external/IPreSptLoadMod.d.ts b/TypeScript/24WebSocket/types/models/external/IPreSptLoadMod.d.ts new file mode 100644 index 0000000..dc38515 --- /dev/null +++ b/TypeScript/24WebSocket/types/models/external/IPreSptLoadMod.d.ts @@ -0,0 +1,4 @@ +import type { DependencyContainer } from "tsyringe"; +export interface IPreSptLoadMod { + preSptLoad(container: DependencyContainer): void; +} diff --git a/TypeScript/24WebSocket/types/models/external/IPreSptLoadModAsync.d.ts b/TypeScript/24WebSocket/types/models/external/IPreSptLoadModAsync.d.ts new file mode 100644 index 0000000..0322434 --- /dev/null +++ b/TypeScript/24WebSocket/types/models/external/IPreSptLoadModAsync.d.ts @@ -0,0 +1,4 @@ +import type { DependencyContainer } from "tsyringe"; +export interface IPreSptLoadModAsync { + preSptLoadAsync(container: DependencyContainer): Promise; +} diff --git a/TypeScript/24WebSocket/types/models/spt/bindings/Route.d.ts b/TypeScript/24WebSocket/types/models/spt/bindings/Route.d.ts index 1b29d7d..abe8d2c 100644 --- a/TypeScript/24WebSocket/types/models/spt/bindings/Route.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/bindings/Route.d.ts @@ -1,3 +1,3 @@ export interface IRoute { - aki: any; + spt: any; } diff --git a/TypeScript/24WebSocket/types/models/spt/bots/BotGenerationDetails.d.ts b/TypeScript/24WebSocket/types/models/spt/bots/BotGenerationDetails.d.ts index 2a7a64e..3977ee5 100644 --- a/TypeScript/24WebSocket/types/models/spt/bots/BotGenerationDetails.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/bots/BotGenerationDetails.d.ts @@ -1,4 +1,4 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; +import { MinMax } from "@spt/models/common/MinMax"; export interface BotGenerationDetails { /** Should the bot be generated as a PMC */ isPmc: boolean; diff --git a/TypeScript/24WebSocket/types/models/spt/bots/GenerateWeaponResult.d.ts b/TypeScript/24WebSocket/types/models/spt/bots/GenerateWeaponResult.d.ts index f28d052..d4a2526 100644 --- a/TypeScript/24WebSocket/types/models/spt/bots/GenerateWeaponResult.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/bots/GenerateWeaponResult.d.ts @@ -1,6 +1,6 @@ -import { Mods } from "@spt-aki/models/eft/common/tables/IBotType"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; +import { Mods } from "@spt/models/eft/common/tables/IBotType"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class GenerateWeaponResult { weapon: Item[]; chosenAmmoTpl: string; diff --git a/TypeScript/24WebSocket/types/models/spt/bots/IBots.d.ts b/TypeScript/24WebSocket/types/models/spt/bots/IBots.d.ts new file mode 100644 index 0000000..f413be4 --- /dev/null +++ b/TypeScript/24WebSocket/types/models/spt/bots/IBots.d.ts @@ -0,0 +1,8 @@ +import { IBotBase } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotCore } from "@spt/models/eft/common/tables/IBotCore"; +import { IBotType } from "@spt/models/eft/common/tables/IBotType"; +export interface IBots { + types: Record; + base: IBotBase; + core: IBotCore; +} diff --git a/TypeScript/24WebSocket/types/models/spt/bots/IFilterPlateModsForSlotByLevelResult.d.ts b/TypeScript/24WebSocket/types/models/spt/bots/IFilterPlateModsForSlotByLevelResult.d.ts new file mode 100644 index 0000000..7e1dbfd --- /dev/null +++ b/TypeScript/24WebSocket/types/models/spt/bots/IFilterPlateModsForSlotByLevelResult.d.ts @@ -0,0 +1,11 @@ +export interface IFilterPlateModsForSlotByLevelResult { + result: Result; + plateModTpls: string[]; +} +export declare enum Result { + UNKNOWN_FAILURE = -1, + SUCCESS = 1, + NO_DEFAULT_FILTER = 2, + NOT_PLATE_HOLDING_SLOT = 3, + LACKS_PLATE_WEIGHTS = 4 +} diff --git a/TypeScript/24WebSocket/types/models/spt/bots/IGenerateEquipmentProperties.d.ts b/TypeScript/24WebSocket/types/models/spt/bots/IGenerateEquipmentProperties.d.ts new file mode 100644 index 0000000..9cf7685 --- /dev/null +++ b/TypeScript/24WebSocket/types/models/spt/bots/IGenerateEquipmentProperties.d.ts @@ -0,0 +1,22 @@ +import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { Chances, Mods } from "@spt/models/eft/common/tables/IBotType"; +import { EquipmentFilters, RandomisationDetails } from "@spt/models/spt/config/IBotConfig"; +export interface IGenerateEquipmentProperties { + /** Root Slot being generated */ + rootEquipmentSlot: string; + /** Equipment pool for root slot being generated */ + rootEquipmentPool: Record; + modPool: Mods; + /** Dictionary of mod items and their chance to spawn for this bot type */ + spawnChances: Chances; + /** Role being generated for */ + botRole: string; + /** Level of bot being generated */ + botLevel: number; + inventory: PmcInventory; + botEquipmentConfig: EquipmentFilters; + /** Settings from bot.json to adjust how item is generated */ + randomisationDetails: RandomisationDetails; + /** OPTIONAL - Do not generate mods for tpls in this array */ + generateModsBlacklist?: string[]; +} diff --git a/TypeScript/24WebSocket/types/models/spt/bots/IGenerateWeaponRequest.d.ts b/TypeScript/24WebSocket/types/models/spt/bots/IGenerateWeaponRequest.d.ts new file mode 100644 index 0000000..4bc8adf --- /dev/null +++ b/TypeScript/24WebSocket/types/models/spt/bots/IGenerateWeaponRequest.d.ts @@ -0,0 +1,37 @@ +import { Mods, ModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { BotModLimits } from "@spt/services/BotWeaponModLimitService"; +export interface IGenerateWeaponRequest { + /** Weapon to add mods to / result that is returned */ + weapon: Item[]; + /** Pool of compatible mods to attach to weapon */ + modPool: Mods; + /** ParentId of weapon */ + weaponId: string; + /** Weapon which mods will be generated on */ + parentTemplate: ITemplateItem; + /** Chance values mod will be added */ + modSpawnChances: ModsChances; + /** Ammo tpl to use when generating magazines/cartridges */ + ammoTpl: string; + /** Bot-specific properties */ + botData: IBotData; + /** limits placed on certain mod types per gun */ + modLimits: BotModLimits; + /** Info related to the weapon being generated */ + weaponStats: IWeaponStats; +} +export interface IBotData { + /** Role of bot weapon is generated for */ + role: string; + /** Level of the bot weapon is being generated for */ + level: number; + /** role of bot when accessing bot.json equipment config settings */ + equipmentRole: string; +} +export interface IWeaponStats { + hasOptic?: boolean; + hasFrontIronSight?: boolean; + hasRearIronSight?: boolean; +} diff --git a/TypeScript/24WebSocket/types/models/spt/bots/IModToSpawnRequest.d.ts b/TypeScript/24WebSocket/types/models/spt/bots/IModToSpawnRequest.d.ts new file mode 100644 index 0000000..58e9a1d --- /dev/null +++ b/TypeScript/24WebSocket/types/models/spt/bots/IModToSpawnRequest.d.ts @@ -0,0 +1,27 @@ +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { ModSpawn } from "@spt/models/enums/ModSpawn"; +import { IWeaponStats } from "@spt/models/spt/bots/IGenerateWeaponRequest"; +import { EquipmentFilterDetails } from "@spt/models/spt/config/IBotConfig"; +export interface IModToSpawnRequest { + /** Slot mod will fit into */ + modSlot: string; + /** Will generate a randomised mod pool if true */ + isRandomisableSlot: boolean; + /** Parent slot the item will be a part of */ + botWeaponSightWhitelist: Record; + /** Blacklist to prevent mods from being picked */ + botEquipBlacklist: EquipmentFilterDetails; + /** Pool of items to pick from */ + itemModPool: Record; + /** Array with only weapon tpl in it, ready for mods to be added */ + weapon: Item[]; + /** Ammo tpl to use if slot requires a cartridge to be added (e.g. mod_magazine) */ + ammoTpl: string; + /** Parent item the mod will go into */ + parentTemplate: ITemplateItem; + /** Should mod be spawned/skipped/use default */ + modSpawnResult: ModSpawn; + /** Weapon stats for weapon being generated */ + weaponStats: IWeaponStats; +} diff --git a/TypeScript/24WebSocket/types/models/spt/callbacks/IBotCallbacks.d.ts b/TypeScript/24WebSocket/types/models/spt/callbacks/IBotCallbacks.d.ts index 02f444e..e49406e 100644 --- a/TypeScript/24WebSocket/types/models/spt/callbacks/IBotCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/callbacks/IBotCallbacks.d.ts @@ -1,7 +1,7 @@ -import { IGenerateBotsRequestData } from "@spt-aki/models/eft/bot/IGenerateBotsRequestData"; -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IBotBase } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; +import { IGenerateBotsRequestData } from "@spt/models/eft/bot/IGenerateBotsRequestData"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IBotBase } from "@spt/models/eft/common/tables/IBotBase"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; export interface IBotCallbacks { getBotLimit(url: string, info: IEmptyRequestData, sessionID: string): string; getBotDifficulty(url: string, info: IEmptyRequestData, sessionID: string): string; diff --git a/TypeScript/24WebSocket/types/models/spt/callbacks/ICustomizationCallbacks.d.ts b/TypeScript/24WebSocket/types/models/spt/callbacks/ICustomizationCallbacks.d.ts index f4f8877..8dba3d7 100644 --- a/TypeScript/24WebSocket/types/models/spt/callbacks/ICustomizationCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/callbacks/ICustomizationCallbacks.d.ts @@ -1,9 +1,9 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { ISuit } from "@spt-aki/models/eft/common/tables/ITrader"; -import { IBuyClothingRequestData } from "@spt-aki/models/eft/customization/IBuyClothingRequestData"; -import { IWearClothingRequestData } from "@spt-aki/models/eft/customization/IWearClothingRequestData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { ISuit } from "@spt/models/eft/common/tables/ITrader"; +import { IBuyClothingRequestData } from "@spt/models/eft/customization/IBuyClothingRequestData"; +import { IWearClothingRequestData } from "@spt/models/eft/customization/IWearClothingRequestData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; export interface ICustomizationCallbacks { getSuits(url: string, info: any, sessionID: string): IGetBodyResponseData; getTraderSuits(url: string, info: any, sessionID: string): IGetBodyResponseData; diff --git a/TypeScript/24WebSocket/types/models/spt/callbacks/IDataCallbacks.d.ts b/TypeScript/24WebSocket/types/models/spt/callbacks/IDataCallbacks.d.ts index 0651dce..cd0adab 100644 --- a/TypeScript/24WebSocket/types/models/spt/callbacks/IDataCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/callbacks/IDataCallbacks.d.ts @@ -1,11 +1,11 @@ -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IGlobals } from "@spt-aki/models/eft/common/IGlobals"; -import { IHideoutArea } from "@spt-aki/models/eft/hideout/IHideoutArea"; -import { IHideoutProduction } from "@spt-aki/models/eft/hideout/IHideoutProduction"; -import { IHideoutScavCase } from "@spt-aki/models/eft/hideout/IHideoutScavCase"; -import { IHideoutSettingsBase } from "@spt-aki/models/eft/hideout/IHideoutSettingsBase"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { ISettingsBase } from "@spt-aki/models/spt/server/ISettingsBase"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IGlobals } from "@spt/models/eft/common/IGlobals"; +import { IHideoutArea } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutScavCase } from "@spt/models/eft/hideout/IHideoutScavCase"; +import { IHideoutSettingsBase } from "@spt/models/eft/hideout/IHideoutSettingsBase"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { ISettingsBase } from "@spt/models/spt/server/ISettingsBase"; export interface IDataCallbacks { getSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getGlobals(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; diff --git a/TypeScript/24WebSocket/types/models/spt/callbacks/IDialogueCallbacks.d.ts b/TypeScript/24WebSocket/types/models/spt/callbacks/IDialogueCallbacks.d.ts index 0cc835b..b30c042 100644 --- a/TypeScript/24WebSocket/types/models/spt/callbacks/IDialogueCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/callbacks/IDialogueCallbacks.d.ts @@ -1,20 +1,20 @@ -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IFriendRequestData } from "@spt-aki/models/eft/dialog/IFriendRequestData"; -import { IGetAllAttachmentsRequestData } from "@spt-aki/models/eft/dialog/IGetAllAttachmentsRequestData"; -import { IGetAllAttachmentsResponse } from "@spt-aki/models/eft/dialog/IGetAllAttachmentsResponse"; -import { IGetChatServerListRequestData } from "@spt-aki/models/eft/dialog/IGetChatServerListRequestData"; -import { IGetFriendListDataResponse } from "@spt-aki/models/eft/dialog/IGetFriendListDataResponse"; -import { IGetMailDialogInfoRequestData } from "@spt-aki/models/eft/dialog/IGetMailDialogInfoRequestData"; -import { IGetMailDialogListRequestData } from "@spt-aki/models/eft/dialog/IGetMailDialogListRequestData"; -import { IGetMailDialogViewRequestData } from "@spt-aki/models/eft/dialog/IGetMailDialogViewRequestData"; -import { IGetMailDialogViewResponseData } from "@spt-aki/models/eft/dialog/IGetMailDialogViewResponseData"; -import { IPinDialogRequestData } from "@spt-aki/models/eft/dialog/IPinDialogRequestData"; -import { IRemoveDialogRequestData } from "@spt-aki/models/eft/dialog/IRemoveDialogRequestData"; -import { ISendMessageRequest } from "@spt-aki/models/eft/dialog/ISendMessageRequest"; -import { ISetDialogReadRequestData } from "@spt-aki/models/eft/dialog/ISetDialogReadRequestData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { INullResponseData } from "@spt-aki/models/eft/httpResponse/INullResponseData"; -import { DialogueInfo } from "@spt-aki/models/eft/profile/IAkiProfile"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IFriendRequestData } from "@spt/models/eft/dialog/IFriendRequestData"; +import { IGetAllAttachmentsRequestData } from "@spt/models/eft/dialog/IGetAllAttachmentsRequestData"; +import { IGetAllAttachmentsResponse } from "@spt/models/eft/dialog/IGetAllAttachmentsResponse"; +import { IGetChatServerListRequestData } from "@spt/models/eft/dialog/IGetChatServerListRequestData"; +import { IGetFriendListDataResponse } from "@spt/models/eft/dialog/IGetFriendListDataResponse"; +import { IGetMailDialogInfoRequestData } from "@spt/models/eft/dialog/IGetMailDialogInfoRequestData"; +import { IGetMailDialogListRequestData } from "@spt/models/eft/dialog/IGetMailDialogListRequestData"; +import { IGetMailDialogViewRequestData } from "@spt/models/eft/dialog/IGetMailDialogViewRequestData"; +import { IGetMailDialogViewResponseData } from "@spt/models/eft/dialog/IGetMailDialogViewResponseData"; +import { IPinDialogRequestData } from "@spt/models/eft/dialog/IPinDialogRequestData"; +import { IRemoveDialogRequestData } from "@spt/models/eft/dialog/IRemoveDialogRequestData"; +import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"; +import { ISetDialogReadRequestData } from "@spt/models/eft/dialog/ISetDialogReadRequestData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { INullResponseData } from "@spt/models/eft/httpResponse/INullResponseData"; +import { DialogueInfo } from "@spt/models/eft/profile/ISptProfile"; export interface IDialogueCallbacks { getFriendList(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getChatServerList(url: string, info: IGetChatServerListRequestData, sessionID: string): IGetBodyResponseData; diff --git a/TypeScript/24WebSocket/types/models/spt/callbacks/IGameCallbacks.d.ts b/TypeScript/24WebSocket/types/models/spt/callbacks/IGameCallbacks.d.ts index 324ec31..21554dd 100644 --- a/TypeScript/24WebSocket/types/models/spt/callbacks/IGameCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/callbacks/IGameCallbacks.d.ts @@ -1,9 +1,9 @@ -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IGameConfigResponse } from "@spt-aki/models/eft/game/IGameConfigResponse"; -import { IGameEmptyCrcRequestData } from "@spt-aki/models/eft/game/IGameEmptyCrcRequestData"; -import { IVersionValidateRequestData } from "@spt-aki/models/eft/game/IVersionValidateRequestData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { INullResponseData } from "@spt-aki/models/eft/httpResponse/INullResponseData"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IGameConfigResponse } from "@spt/models/eft/game/IGameConfigResponse"; +import { IGameEmptyCrcRequestData } from "@spt/models/eft/game/IGameEmptyCrcRequestData"; +import { IVersionValidateRequestData } from "@spt/models/eft/game/IVersionValidateRequestData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { INullResponseData } from "@spt/models/eft/httpResponse/INullResponseData"; export interface IGameCallbacks { versionValidate(url: string, info: IVersionValidateRequestData, sessionID: string): INullResponseData; gameStart(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; diff --git a/TypeScript/24WebSocket/types/models/spt/callbacks/IHealthCallbacks.d.ts b/TypeScript/24WebSocket/types/models/spt/callbacks/IHealthCallbacks.d.ts index 0ea81a2..c0244a1 100644 --- a/TypeScript/24WebSocket/types/models/spt/callbacks/IHealthCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/callbacks/IHealthCallbacks.d.ts @@ -1,11 +1,11 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IHealthTreatmentRequestData } from "@spt-aki/models/eft/health/IHealthTreatmentRequestData"; -import { IOffraidEatRequestData } from "@spt-aki/models/eft/health/IOffraidEatRequestData"; -import { IOffraidHealRequestData } from "@spt-aki/models/eft/health/IOffraidHealRequestData"; -import { ISyncHealthRequestData } from "@spt-aki/models/eft/health/ISyncHealthRequestData"; -import { IAkiProfile } from "@spt-aki/models/eft/profile/IAkiProfile"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IHealthTreatmentRequestData } from "@spt/models/eft/health/IHealthTreatmentRequestData"; +import { IOffraidEatRequestData } from "@spt/models/eft/health/IOffraidEatRequestData"; +import { IOffraidHealRequestData } from "@spt/models/eft/health/IOffraidHealRequestData"; +import { ISyncHealthRequestData } from "@spt/models/eft/health/ISyncHealthRequestData"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; export interface IHealthCallbacks { - onLoad(sessionID: string): IAkiProfile; + onLoad(sessionID: string): ISptProfile; syncHealth(url: string, info: ISyncHealthRequestData, sessionID: string): any; offraidEat(pmcData: IPmcData, body: IOffraidEatRequestData, sessionID: string): any; offraidHeal(pmcData: IPmcData, body: IOffraidHealRequestData, sessionID: string): any; diff --git a/TypeScript/24WebSocket/types/models/spt/callbacks/IHideoutCallbacks.d.ts b/TypeScript/24WebSocket/types/models/spt/callbacks/IHideoutCallbacks.d.ts index feda12e..1349144 100644 --- a/TypeScript/24WebSocket/types/models/spt/callbacks/IHideoutCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/callbacks/IHideoutCallbacks.d.ts @@ -1,14 +1,14 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IHideoutContinuousProductionStartRequestData } from "@spt-aki/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; -import { IHideoutPutItemInRequestData } from "@spt-aki/models/eft/hideout/IHideoutPutItemInRequestData"; -import { IHideoutScavCaseStartRequestData } from "@spt-aki/models/eft/hideout/IHideoutScavCaseStartRequestData"; -import { IHideoutSingleProductionStartRequestData } from "@spt-aki/models/eft/hideout/IHideoutSingleProductionStartRequestData"; -import { IHideoutTakeItemOutRequestData } from "@spt-aki/models/eft/hideout/IHideoutTakeItemOutRequestData"; -import { IHideoutTakeProductionRequestData } from "@spt-aki/models/eft/hideout/IHideoutTakeProductionRequestData"; -import { IHideoutToggleAreaRequestData } from "@spt-aki/models/eft/hideout/IHideoutToggleAreaRequestData"; -import { IHideoutUpgradeCompleteRequestData } from "@spt-aki/models/eft/hideout/IHideoutUpgradeCompleteRequestData"; -import { IHideoutUpgradeRequestData } from "@spt-aki/models/eft/hideout/IHideoutUpgradeRequestData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; +import { IHideoutScavCaseStartRequestData } from "@spt/models/eft/hideout/IHideoutScavCaseStartRequestData"; +import { IHideoutSingleProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutSingleProductionStartRequestData"; +import { IHideoutTakeItemOutRequestData } from "@spt/models/eft/hideout/IHideoutTakeItemOutRequestData"; +import { IHideoutTakeProductionRequestData } from "@spt/models/eft/hideout/IHideoutTakeProductionRequestData"; +import { IHideoutToggleAreaRequestData } from "@spt/models/eft/hideout/IHideoutToggleAreaRequestData"; +import { IHideoutUpgradeCompleteRequestData } from "@spt/models/eft/hideout/IHideoutUpgradeCompleteRequestData"; +import { IHideoutUpgradeRequestData } from "@spt/models/eft/hideout/IHideoutUpgradeRequestData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; export interface IHideoutCallbacks { upgrade(pmcData: IPmcData, body: IHideoutUpgradeRequestData, sessionID: string): IItemEventRouterResponse; upgradeComplete(pmcData: IPmcData, body: IHideoutUpgradeCompleteRequestData, sessionID: string): IItemEventRouterResponse; diff --git a/TypeScript/24WebSocket/types/models/spt/callbacks/IInraidCallbacks.d.ts b/TypeScript/24WebSocket/types/models/spt/callbacks/IInraidCallbacks.d.ts index 4754c0c..b267942 100644 --- a/TypeScript/24WebSocket/types/models/spt/callbacks/IInraidCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/callbacks/IInraidCallbacks.d.ts @@ -1,10 +1,10 @@ -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { INullResponseData } from "@spt-aki/models/eft/httpResponse/INullResponseData"; -import { IRegisterPlayerRequestData } from "@spt-aki/models/eft/inRaid/IRegisterPlayerRequestData"; -import { ISaveProgressRequestData } from "@spt-aki/models/eft/inRaid/ISaveProgressRequestData"; -import { IAkiProfile } from "@spt-aki/models/eft/profile/IAkiProfile"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { INullResponseData } from "@spt/models/eft/httpResponse/INullResponseData"; +import { IRegisterPlayerRequestData } from "@spt/models/eft/inRaid/IRegisterPlayerRequestData"; +import { ISaveProgressRequestData } from "@spt/models/eft/inRaid/ISaveProgressRequestData"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; export interface IInraidCallbacks { - onLoad(sessionID: string): IAkiProfile; + onLoad(sessionID: string): ISptProfile; registerPlayer(url: string, info: IRegisterPlayerRequestData, sessionID: string): INullResponseData; saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; getRaidEndState(): string; diff --git a/TypeScript/24WebSocket/types/models/spt/callbacks/IInsuranceCallbacks.d.ts b/TypeScript/24WebSocket/types/models/spt/callbacks/IInsuranceCallbacks.d.ts index 649039a..2fae550 100644 --- a/TypeScript/24WebSocket/types/models/spt/callbacks/IInsuranceCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/callbacks/IInsuranceCallbacks.d.ts @@ -1,9 +1,9 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IGetInsuranceCostRequestData } from "@spt-aki/models/eft/insurance/IGetInsuranceCostRequestData"; -import { IInsureRequestData } from "@spt-aki/models/eft/insurance/IInsureRequestData"; -import { IAkiProfile } from "@spt-aki/models/eft/profile/IAkiProfile"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IGetInsuranceCostRequestData } from "@spt/models/eft/insurance/IGetInsuranceCostRequestData"; +import { IInsureRequestData } from "@spt/models/eft/insurance/IInsureRequestData"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; export interface IInsuranceCallbacks { - onLoad(sessionID: string): IAkiProfile; + onLoad(sessionID: string): ISptProfile; getInsuranceCost(url: string, info: IGetInsuranceCostRequestData, sessionID: string): any; insure(pmcData: IPmcData, body: IInsureRequestData, sessionID: string): any; update(secondsSinceLastRun: number): boolean; diff --git a/TypeScript/24WebSocket/types/models/spt/callbacks/IInventoryCallbacks.d.ts b/TypeScript/24WebSocket/types/models/spt/callbacks/IInventoryCallbacks.d.ts index 7abe819..079d37b 100644 --- a/TypeScript/24WebSocket/types/models/spt/callbacks/IInventoryCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/callbacks/IInventoryCallbacks.d.ts @@ -1,21 +1,21 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IInventoryBindRequestData } from "@spt-aki/models/eft/inventory/IInventoryBindRequestData"; -import { IInventoryCreateMarkerRequestData } from "@spt-aki/models/eft/inventory/IInventoryCreateMarkerRequestData"; -import { IInventoryDeleteMarkerRequestData } from "@spt-aki/models/eft/inventory/IInventoryDeleteMarkerRequestData"; -import { IInventoryEditMarkerRequestData } from "@spt-aki/models/eft/inventory/IInventoryEditMarkerRequestData"; -import { IInventoryExamineRequestData } from "@spt-aki/models/eft/inventory/IInventoryExamineRequestData"; -import { IInventoryFoldRequestData } from "@spt-aki/models/eft/inventory/IInventoryFoldRequestData"; -import { IInventoryMergeRequestData } from "@spt-aki/models/eft/inventory/IInventoryMergeRequestData"; -import { IInventoryMoveRequestData } from "@spt-aki/models/eft/inventory/IInventoryMoveRequestData"; -import { IInventoryReadEncyclopediaRequestData } from "@spt-aki/models/eft/inventory/IInventoryReadEncyclopediaRequestData"; -import { IInventoryRemoveRequestData } from "@spt-aki/models/eft/inventory/IInventoryRemoveRequestData"; -import { IInventorySortRequestData } from "@spt-aki/models/eft/inventory/IInventorySortRequestData"; -import { IInventorySplitRequestData } from "@spt-aki/models/eft/inventory/IInventorySplitRequestData"; -import { IInventorySwapRequestData } from "@spt-aki/models/eft/inventory/IInventorySwapRequestData"; -import { IInventoryTagRequestData } from "@spt-aki/models/eft/inventory/IInventoryTagRequestData"; -import { IInventoryToggleRequestData } from "@spt-aki/models/eft/inventory/IInventoryToggleRequestData"; -import { IInventoryTransferRequestData } from "@spt-aki/models/eft/inventory/IInventoryTransferRequestData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IInventoryBindRequestData } from "@spt/models/eft/inventory/IInventoryBindRequestData"; +import { IInventoryCreateMarkerRequestData } from "@spt/models/eft/inventory/IInventoryCreateMarkerRequestData"; +import { IInventoryDeleteMarkerRequestData } from "@spt/models/eft/inventory/IInventoryDeleteMarkerRequestData"; +import { IInventoryEditMarkerRequestData } from "@spt/models/eft/inventory/IInventoryEditMarkerRequestData"; +import { IInventoryExamineRequestData } from "@spt/models/eft/inventory/IInventoryExamineRequestData"; +import { IInventoryFoldRequestData } from "@spt/models/eft/inventory/IInventoryFoldRequestData"; +import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData"; +import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData"; +import { IInventoryReadEncyclopediaRequestData } from "@spt/models/eft/inventory/IInventoryReadEncyclopediaRequestData"; +import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData"; +import { IInventorySortRequestData } from "@spt/models/eft/inventory/IInventorySortRequestData"; +import { IInventorySplitRequestData } from "@spt/models/eft/inventory/IInventorySplitRequestData"; +import { IInventorySwapRequestData } from "@spt/models/eft/inventory/IInventorySwapRequestData"; +import { IInventoryTagRequestData } from "@spt/models/eft/inventory/IInventoryTagRequestData"; +import { IInventoryToggleRequestData } from "@spt/models/eft/inventory/IInventoryToggleRequestData"; +import { IInventoryTransferRequestData } from "@spt/models/eft/inventory/IInventoryTransferRequestData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; export interface IInventoryCallbacks { moveItem(pmcData: IPmcData, body: IInventoryMoveRequestData, sessionID: string): IItemEventRouterResponse; removeItem(pmcData: IPmcData, body: IInventoryRemoveRequestData, sessionID: string): IItemEventRouterResponse; diff --git a/TypeScript/24WebSocket/types/models/spt/callbacks/IItemEventCallbacks.d.ts b/TypeScript/24WebSocket/types/models/spt/callbacks/IItemEventCallbacks.d.ts index 6778e54..98fdb0b 100644 --- a/TypeScript/24WebSocket/types/models/spt/callbacks/IItemEventCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/callbacks/IItemEventCallbacks.d.ts @@ -1,6 +1,6 @@ -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { IItemEventRouterRequest } from "@spt-aki/models/eft/itemEvent/IItemEventRouterRequest"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { IItemEventRouterRequest } from "@spt/models/eft/itemEvent/IItemEventRouterRequest"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; export interface IItemEventCallbacks { handleEvents(url: string, info: IItemEventRouterRequest, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/24WebSocket/types/models/spt/callbacks/ILauncherCallbacks.d.ts b/TypeScript/24WebSocket/types/models/spt/callbacks/ILauncherCallbacks.d.ts index d37e58c..d01ae52 100644 --- a/TypeScript/24WebSocket/types/models/spt/callbacks/ILauncherCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/callbacks/ILauncherCallbacks.d.ts @@ -1,8 +1,8 @@ -import { IChangeRequestData } from "@spt-aki/models/eft/launcher/IChangeRequestData"; -import { IGetMiniProfileRequestData } from "@spt-aki/models/eft/launcher/IGetMiniProfileRequestData"; -import { ILoginRequestData } from "@spt-aki/models/eft/launcher/ILoginRequestData"; -import { IRegisterData } from "@spt-aki/models/eft/launcher/IRegisterData"; -import { IRemoveProfileData } from "@spt-aki/models/eft/launcher/IRemoveProfileData"; +import { IChangeRequestData } from "@spt/models/eft/launcher/IChangeRequestData"; +import { IGetMiniProfileRequestData } from "@spt/models/eft/launcher/IGetMiniProfileRequestData"; +import { ILoginRequestData } from "@spt/models/eft/launcher/ILoginRequestData"; +import { IRegisterData } from "@spt/models/eft/launcher/IRegisterData"; +import { IRemoveProfileData } from "@spt/models/eft/launcher/IRemoveProfileData"; export interface ILauncherCallbacks { connect(): string; login(url: string, info: ILoginRequestData, sessionID: string): string; diff --git a/TypeScript/24WebSocket/types/models/spt/callbacks/ILocationCallbacks.d.ts b/TypeScript/24WebSocket/types/models/spt/callbacks/ILocationCallbacks.d.ts index a031a29..e51c723 100644 --- a/TypeScript/24WebSocket/types/models/spt/callbacks/ILocationCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/callbacks/ILocationCallbacks.d.ts @@ -1,7 +1,7 @@ -import { ILocationBase } from "@spt-aki/models/eft/common/ILocationBase"; -import { ILocationsGenerateAllResponse } from "@spt-aki/models/eft/common/ILocationsSourceDestinationBase"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { IGetLocationRequestData } from "@spt-aki/models/eft/location/IGetLocationRequestData"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { ILocationsGenerateAllResponse } from "@spt/models/eft/common/ILocationsSourceDestinationBase"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { IGetLocationRequestData } from "@spt/models/eft/location/IGetLocationRequestData"; export interface ILocationCallbacks { getLocationData(url: string, info: any, sessionID: string): IGetBodyResponseData; getLocation(url: string, info: IGetLocationRequestData, sessionID: string): IGetBodyResponseData; diff --git a/TypeScript/24WebSocket/types/models/spt/callbacks/INoteCallbacks.d.ts b/TypeScript/24WebSocket/types/models/spt/callbacks/INoteCallbacks.d.ts index aec8099..5ea2c96 100644 --- a/TypeScript/24WebSocket/types/models/spt/callbacks/INoteCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/callbacks/INoteCallbacks.d.ts @@ -1,6 +1,6 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { INoteActionData } from "@spt-aki/models/eft/notes/INoteActionData"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { INoteActionData } from "@spt/models/eft/notes/INoteActionData"; export interface INoteCallbacks { addNote(pmcData: IPmcData, body: INoteActionData, sessionID: string): IItemEventRouterResponse; editNote(pmcData: IPmcData, body: INoteActionData, sessionID: string): IItemEventRouterResponse; diff --git a/TypeScript/24WebSocket/types/models/spt/callbacks/INotifierCallbacks.d.ts b/TypeScript/24WebSocket/types/models/spt/callbacks/INotifierCallbacks.d.ts index 7da556b..9f1fae1 100644 --- a/TypeScript/24WebSocket/types/models/spt/callbacks/INotifierCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/callbacks/INotifierCallbacks.d.ts @@ -1,7 +1,7 @@ -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IUIDRequestData } from "@spt-aki/models/eft/common/request/IUIDRequestData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { INotifierChannel } from "@spt-aki/models/eft/notifier/INotifier"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IUIDRequestData } from "@spt/models/eft/common/request/IUIDRequestData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { INotifierChannel } from "@spt/models/eft/notifier/INotifier"; export interface INotifierCallbacks { /** * If we don't have anything to send, it's ok to not send anything back diff --git a/TypeScript/24WebSocket/types/models/spt/callbacks/IPresetBuildCallbacks.d.ts b/TypeScript/24WebSocket/types/models/spt/callbacks/IPresetBuildCallbacks.d.ts index 886cc9c..b0d75bd 100644 --- a/TypeScript/24WebSocket/types/models/spt/callbacks/IPresetBuildCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/callbacks/IPresetBuildCallbacks.d.ts @@ -1,8 +1,8 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IPresetBuildActionRequestData } from "@spt-aki/models/eft/presetBuild/IPresetBuildActionRequestData"; -import { IWeaponBuild } from "@spt-aki/models/eft/profile/IAkiProfile"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IPresetBuildActionRequestData } from "@spt/models/eft/presetBuild/IPresetBuildActionRequestData"; +import { IWeaponBuild } from "@spt/models/eft/profile/ISptProfile"; export interface IPresetBuildCallbacks { getHandbookUserlist(url: string, info: any, sessionID: string): IGetBodyResponseData; saveWeaponBuild(pmcData: IPmcData, body: IPresetBuildActionRequestData, sessionID: string): IItemEventRouterResponse; diff --git a/TypeScript/24WebSocket/types/models/spt/callbacks/IProfileCallbacks.d.ts b/TypeScript/24WebSocket/types/models/spt/callbacks/IProfileCallbacks.d.ts index f05532a..f769cfd 100644 --- a/TypeScript/24WebSocket/types/models/spt/callbacks/IProfileCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/callbacks/IProfileCallbacks.d.ts @@ -1,12 +1,12 @@ -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { INullResponseData } from "@spt-aki/models/eft/httpResponse/INullResponseData"; -import { IProfileChangeNicknameRequestData } from "@spt-aki/models/eft/profile/IProfileChangeNicknameRequestData"; -import { IProfileChangeVoiceRequestData } from "@spt-aki/models/eft/profile/IProfileChangeVoiceRequestData"; -import { IProfileCreateRequestData } from "@spt-aki/models/eft/profile/IProfileCreateRequestData"; -import { ISearchFriendRequestData } from "@spt-aki/models/eft/profile/ISearchFriendRequestData"; -import { ISearchFriendResponse } from "@spt-aki/models/eft/profile/ISearchFriendResponse"; -import { IValidateNicknameRequestData } from "@spt-aki/models/eft/profile/IValidateNicknameRequestData"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { INullResponseData } from "@spt/models/eft/httpResponse/INullResponseData"; +import { IProfileChangeNicknameRequestData } from "@spt/models/eft/profile/IProfileChangeNicknameRequestData"; +import { IProfileChangeVoiceRequestData } from "@spt/models/eft/profile/IProfileChangeVoiceRequestData"; +import { IProfileCreateRequestData } from "@spt/models/eft/profile/IProfileCreateRequestData"; +import { ISearchFriendRequestData } from "@spt/models/eft/profile/ISearchFriendRequestData"; +import { ISearchFriendResponse } from "@spt/models/eft/profile/ISearchFriendResponse"; +import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; export interface IProfileCallbacks { onLoad(sessionID: string): any; createProfile(url: string, info: IProfileCreateRequestData, sessionID: string): IGetBodyResponseData; diff --git a/TypeScript/24WebSocket/types/models/spt/callbacks/IQuestCallbacks.d.ts b/TypeScript/24WebSocket/types/models/spt/callbacks/IQuestCallbacks.d.ts index 546191f..1a688a7 100644 --- a/TypeScript/24WebSocket/types/models/spt/callbacks/IQuestCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/callbacks/IQuestCallbacks.d.ts @@ -1,14 +1,14 @@ -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IQuest } from "@spt-aki/models/eft/common/tables/IQuest"; -import { IPmcDataRepeatableQuest } from "@spt-aki/models/eft/common/tables/IRepeatableQuests"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IAcceptQuestRequestData } from "@spt-aki/models/eft/quests/IAcceptQuestRequestData"; -import { ICompleteQuestRequestData } from "@spt-aki/models/eft/quests/ICompleteQuestRequestData"; -import { IHandoverQuestRequestData } from "@spt-aki/models/eft/quests/IHandoverQuestRequestData"; -import { IListQuestsRequestData } from "@spt-aki/models/eft/quests/IListQuestsRequestData"; -import { IRepeatableQuestChangeRequest } from "@spt-aki/models/eft/quests/IRepeatableQuestChangeRequest"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IQuest } from "@spt/models/eft/common/tables/IQuest"; +import { IPmcDataRepeatableQuest } from "@spt/models/eft/common/tables/IRepeatableQuests"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IAcceptQuestRequestData } from "@spt/models/eft/quests/IAcceptQuestRequestData"; +import { ICompleteQuestRequestData } from "@spt/models/eft/quests/ICompleteQuestRequestData"; +import { IHandoverQuestRequestData } from "@spt/models/eft/quests/IHandoverQuestRequestData"; +import { IListQuestsRequestData } from "@spt/models/eft/quests/IListQuestsRequestData"; +import { IRepeatableQuestChangeRequest } from "@spt/models/eft/quests/IRepeatableQuestChangeRequest"; export interface IQuestCallbacks { changeRepeatableQuest(pmcData: IPmcData, body: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse; acceptQuest(pmcData: IPmcData, body: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; diff --git a/TypeScript/24WebSocket/types/models/spt/callbacks/IRagfairCallbacks.d.ts b/TypeScript/24WebSocket/types/models/spt/callbacks/IRagfairCallbacks.d.ts index 1157349..dcad1ee 100644 --- a/TypeScript/24WebSocket/types/models/spt/callbacks/IRagfairCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/callbacks/IRagfairCallbacks.d.ts @@ -1,13 +1,13 @@ -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IAddOfferRequestData } from "@spt-aki/models/eft/ragfair/IAddOfferRequestData"; -import { IExtendOfferRequestData } from "@spt-aki/models/eft/ragfair/IExtendOfferRequestData"; -import { IGetItemPriceResult } from "@spt-aki/models/eft/ragfair/IGetItemPriceResult"; -import { IGetMarketPriceRequestData } from "@spt-aki/models/eft/ragfair/IGetMarketPriceRequestData"; -import { IRemoveOfferRequestData } from "@spt-aki/models/eft/ragfair/IRemoveOfferRequestData"; -import { ISearchRequestData } from "@spt-aki/models/eft/ragfair/ISearchRequestData"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IAddOfferRequestData } from "@spt/models/eft/ragfair/IAddOfferRequestData"; +import { IExtendOfferRequestData } from "@spt/models/eft/ragfair/IExtendOfferRequestData"; +import { IGetItemPriceResult } from "@spt/models/eft/ragfair/IGetItemPriceResult"; +import { IGetMarketPriceRequestData } from "@spt/models/eft/ragfair/IGetMarketPriceRequestData"; +import { IRemoveOfferRequestData } from "@spt/models/eft/ragfair/IRemoveOfferRequestData"; +import { ISearchRequestData } from "@spt/models/eft/ragfair/ISearchRequestData"; export interface IRagfairCallbacks { load(): void; search(url: string, info: ISearchRequestData, sessionID: string): IGetBodyResponseData; diff --git a/TypeScript/24WebSocket/types/models/spt/callbacks/IRepairCallbacks.d.ts b/TypeScript/24WebSocket/types/models/spt/callbacks/IRepairCallbacks.d.ts index b83fde8..e8d4fe1 100644 --- a/TypeScript/24WebSocket/types/models/spt/callbacks/IRepairCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/callbacks/IRepairCallbacks.d.ts @@ -1,7 +1,7 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IRepairActionDataRequest } from "@spt-aki/models/eft/repair/IRepairActionDataRequest"; -import { ITraderRepairActionDataRequest } from "@spt-aki/models/eft/repair/ITraderRepairActionDataRequest"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IRepairActionDataRequest } from "@spt/models/eft/repair/IRepairActionDataRequest"; +import { ITraderRepairActionDataRequest } from "@spt/models/eft/repair/ITraderRepairActionDataRequest"; export interface IRepairCallbacks { traderRepair(pmcData: IPmcData, body: ITraderRepairActionDataRequest, sessionID: string): IItemEventRouterResponse; repair(pmcData: IPmcData, body: IRepairActionDataRequest, sessionID: string): IItemEventRouterResponse; diff --git a/TypeScript/24WebSocket/types/models/spt/callbacks/ITradeCallbacks.d.ts b/TypeScript/24WebSocket/types/models/spt/callbacks/ITradeCallbacks.d.ts index b6daa5d..9b71d93 100644 --- a/TypeScript/24WebSocket/types/models/spt/callbacks/ITradeCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/callbacks/ITradeCallbacks.d.ts @@ -1,7 +1,7 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IProcessBaseTradeRequestData } from "@spt-aki/models/eft/trade/IProcessBaseTradeRequestData"; -import { IProcessRagfairTradeRequestData } from "@spt-aki/models/eft/trade/IProcessRagfairTradeRequestData"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IProcessBaseTradeRequestData } from "@spt/models/eft/trade/IProcessBaseTradeRequestData"; +import { IProcessRagfairTradeRequestData } from "@spt/models/eft/trade/IProcessRagfairTradeRequestData"; export interface ITradeCallbacks { processTrade(pmcData: IPmcData, body: IProcessBaseTradeRequestData, sessionID: string): IItemEventRouterResponse; processRagfairTrade(pmcData: IPmcData, body: IProcessRagfairTradeRequestData, sessionID: string): IItemEventRouterResponse; diff --git a/TypeScript/24WebSocket/types/models/spt/callbacks/ITraderCallbacks.d.ts b/TypeScript/24WebSocket/types/models/spt/callbacks/ITraderCallbacks.d.ts index 23cd532..963e523 100644 --- a/TypeScript/24WebSocket/types/models/spt/callbacks/ITraderCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/callbacks/ITraderCallbacks.d.ts @@ -1,6 +1,6 @@ -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { ITraderAssort, ITraderBase } from "@spt-aki/models/eft/common/tables/ITrader"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { ITraderAssort, ITraderBase } from "@spt/models/eft/common/tables/ITrader"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; export interface ITraderCallbacks { load(): void; getTraderSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; diff --git a/TypeScript/24WebSocket/types/models/spt/callbacks/IWeatherCallbacks.d.ts b/TypeScript/24WebSocket/types/models/spt/callbacks/IWeatherCallbacks.d.ts index 1ba5b47..5713469 100644 --- a/TypeScript/24WebSocket/types/models/spt/callbacks/IWeatherCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/callbacks/IWeatherCallbacks.d.ts @@ -1,5 +1,5 @@ -import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; +import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; export interface IWeatherCallbacks { getWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/24WebSocket/types/models/spt/callbacks/IWishlistCallbacks.d.ts b/TypeScript/24WebSocket/types/models/spt/callbacks/IWishlistCallbacks.d.ts index 3ab5c68..16f056d 100644 --- a/TypeScript/24WebSocket/types/models/spt/callbacks/IWishlistCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/callbacks/IWishlistCallbacks.d.ts @@ -1,6 +1,6 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IWishlistActionData } from "@spt-aki/models/eft/wishlist/IWishlistActionData"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IWishlistActionData } from "@spt/models/eft/wishlist/IWishlistActionData"; export interface IWishlistCallbacks { addToWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; removeFromWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; diff --git a/TypeScript/24WebSocket/types/models/spt/config/IAirdropConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/IAirdropConfig.d.ts index 8efb870..d438f00 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/IAirdropConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/IAirdropConfig.d.ts @@ -1,8 +1,8 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; -import { AirdropTypeEnum } from "@spt-aki/models/enums/AirdropType"; -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { MinMax } from "@spt/models/common/MinMax"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IAirdropConfig extends IBaseConfig { - kind: "aki-airdrop"; + kind: "spt-airdrop"; airdropChancePercent: AirdropChancePercent; airdropTypeWeightings: Record; /** Lowest point plane will fly at */ diff --git a/TypeScript/24WebSocket/types/models/spt/config/IBTRConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/IBTRConfig.d.ts index 4c592f4..2f56f73 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/IBTRConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/IBTRConfig.d.ts @@ -1,7 +1,7 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; -import { IBaseConfig } from "./IBaseConfig"; +import { MinMax } from "@spt/models/common/MinMax"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IBTRConfig extends IBaseConfig { - kind: "aki-btr"; + kind: "spt-btr"; /** How fast the BTR moves */ moveSpeed: number; /** How long the cover fire service lasts for */ diff --git a/TypeScript/24WebSocket/types/models/spt/config/IBotConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/IBotConfig.d.ts index 0148f2a..b8c782a 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/IBotConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/IBotConfig.d.ts @@ -1,12 +1,12 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; -import { GenerationData } from "@spt-aki/models/eft/common/tables/IBotType"; -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; -import { IBotDurability } from "@spt-aki/models/spt/config/IBotDurability"; +import { MinMax } from "@spt/models/common/MinMax"; +import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; +import { IBotDurability } from "@spt/models/spt/config/IBotDurability"; export interface IBotConfig extends IBaseConfig { - kind: "aki-bot"; + kind: "spt-bot"; /** How many variants of each bot should be generated on raid start */ presetBatch: PresetBatch; - /** Bot roles that should not have PMC types (sptBear/sptUsec) added as enemies to */ + /** Bot roles that should not have PMC types (pmcBEAR/pmcUSEC) added as enemies to */ botsToNotAddPMCsAsEnemiesTo: string[]; /** What bot types should be classified as bosses */ bosses: string[]; @@ -39,6 +39,16 @@ export interface IBotConfig extends IBaseConfig { walletLoot: IWalletLootSettings; /** Currency weights, Keyed by botrole / currency */ currencyStackSize: Record>>; + /** Tpls for low profile gas blocks */ + lowProfileGasBlockTpls: string[]; + /** What bottypes should be excluded from having loot generated on them (backpack/pocket/vest) does not disable food/drink/special/ */ + disableLootOnBotTypes: string[]; + assaultToBossConversion: IAssaultToBossConversion; +} +export interface IAssaultToBossConversion { + bossConvertEnabled: boolean; + bossesToConvertToWeights: Record; + bossConvertMinMax: Record; } /** Number of bots to generate and store in cache on raid start per bot type */ export interface PresetBatch { @@ -76,8 +86,8 @@ export interface PresetBatch { crazyAssaultEvent: number; bossBoar: number; bossBoarSniper: number; - sptUsec: number; - sptBear: number; + pmcUSEC: number; + pmcBEAR: number; } export interface IWalletLootSettings { /** Chance wallets have loot in them */ diff --git a/TypeScript/24WebSocket/types/models/spt/config/ICoreConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/ICoreConfig.d.ts index 3ecc337..6d086f7 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/ICoreConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/ICoreConfig.d.ts @@ -1,7 +1,7 @@ -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ICoreConfig extends IBaseConfig { - kind: "aki-core"; - akiVersion: string; + kind: "spt-core"; + sptVersion: string; projectName: string; compatibleTarkovVersion: string; serverName: string; @@ -16,6 +16,8 @@ export interface ICoreConfig extends IBaseConfig { commit?: string; /** Timestamp of server build */ buildTime?: string; + /** Server locale keys that will be added to the bottom of the startup watermark */ + customWatermarkLocaleKeys?: string[]; } export interface IBsgLogging { /** @@ -60,11 +62,14 @@ export interface IServerFeatures { autoInstallModDependencies: boolean; compressProfile: boolean; chatbotFeatures: IChatbotFeatures; + /** Keyed to profile type e.g. "Standard" or "SPT Developer" */ + createNewProfileTypesBlacklist: string[]; } export interface IChatbotFeatures { sptFriendEnabled: boolean; commandoEnabled: boolean; commandoFeatures: ICommandoFeatures; + commandUseLimits: Record; } export interface ICommandoFeatures { giveCommandEnabled: boolean; diff --git a/TypeScript/24WebSocket/types/models/spt/config/IGiftsConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/IGiftsConfig.d.ts index b73761b..736c4b7 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/IGiftsConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/IGiftsConfig.d.ts @@ -1,12 +1,12 @@ -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { IUserDialogInfo } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { GiftSenderType } from "@spt-aki/models/enums/GiftSenderType"; -import { SeasonalEventType } from "@spt-aki/models/enums/SeasonalEventType"; -import { Traders } from "@spt-aki/models/enums/Traders"; -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; -import { IProfileChangeEvent } from "../dialog/ISendMessageDetails"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; +import { GiftSenderType } from "@spt/models/enums/GiftSenderType"; +import { SeasonalEventType } from "@spt/models/enums/SeasonalEventType"; +import { Traders } from "@spt/models/enums/Traders"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; +import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails"; export interface IGiftsConfig extends IBaseConfig { - kind: "aki-gifts"; + kind: "spt-gifts"; gifts: Record; } export interface Gift { @@ -28,4 +28,5 @@ export interface Gift { collectionTimeHours: number; /** Optional, can be used to change profile settings like level/skills */ profileChangeEvents?: IProfileChangeEvent[]; + maxToSendPlayer?: number; } diff --git a/TypeScript/24WebSocket/types/models/spt/config/IHealthConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/IHealthConfig.d.ts index 49b405f..b86c208 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/IHealthConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/IHealthConfig.d.ts @@ -1,6 +1,6 @@ -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IHealthConfig extends IBaseConfig { - kind: "aki-health"; + kind: "spt-health"; healthMultipliers: HealthMultipliers; save: Save; } diff --git a/TypeScript/24WebSocket/types/models/spt/config/IHideoutConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/IHideoutConfig.d.ts index 6b07c34..c1967c0 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/IHideoutConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/IHideoutConfig.d.ts @@ -1,6 +1,6 @@ -import { IBaseConfig, IRunIntervalValues } from "@spt-aki/models/spt/config/IBaseConfig"; +import { IBaseConfig, IRunIntervalValues } from "@spt/models/spt/config/IBaseConfig"; export interface IHideoutConfig extends IBaseConfig { - kind: "aki-hideout"; + kind: "spt-hideout"; /** How many seconds should pass before hideout crafts / fuel usage is checked and procesed */ runIntervalSeconds: number; /** Default values used to hydrate `runIntervalSeconds` with */ diff --git a/TypeScript/24WebSocket/types/models/spt/config/IHttpConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/IHttpConfig.d.ts index e7123fc..0f42e77 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/IHttpConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/IHttpConfig.d.ts @@ -1,6 +1,6 @@ -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IHttpConfig extends IBaseConfig { - kind: "aki-http"; + kind: "spt-http"; /** Address used by webserver */ ip: string; port: number; @@ -9,6 +9,6 @@ export interface IHttpConfig extends IBaseConfig { backendPort: string; webSocketPingDelayMs: number; logRequests: boolean; - /** e.g. "Aki_Data/Server/images/traders/579dc571d53a0658a154fbec.png": "Aki_Data/Server/images/traders/NewTraderImage.png" */ + /** e.g. "SPT_Data/Server/images/traders/579dc571d53a0658a154fbec.png": "SPT_Data/Server/images/traders/NewTraderImage.png" */ serverImagePathOverride: Record; } diff --git a/TypeScript/24WebSocket/types/models/spt/config/IInRaidConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/IInRaidConfig.d.ts index 47023bf..7d6befd 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/IInRaidConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/IInRaidConfig.d.ts @@ -1,6 +1,6 @@ -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IInRaidConfig extends IBaseConfig { - kind: "aki-inraid"; + kind: "spt-inraid"; MIAOnRaidEnd: boolean; /** Overrides to apply to the pre-raid settings screen */ raidMenuSettings: RaidMenuSettings; diff --git a/TypeScript/24WebSocket/types/models/spt/config/IInsuranceConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/IInsuranceConfig.d.ts index 86200f6..2bbd7b3 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/IInsuranceConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/IInsuranceConfig.d.ts @@ -1,8 +1,6 @@ -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IInsuranceConfig extends IBaseConfig { - kind: "aki-insurance"; - /** Insurance price multiplier */ - insuranceMultiplier: Record; + kind: "spt-insurance"; /** Chance item is returned as insurance, keyed by trader id */ returnChancePercent: Record; /** Item slots that should never be returned as insurance */ diff --git a/TypeScript/24WebSocket/types/models/spt/config/IInventoryConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/IInventoryConfig.d.ts index bc64719..b489393 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/IInventoryConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/IInventoryConfig.d.ts @@ -1,7 +1,7 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { MinMax } from "@spt/models/common/MinMax"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IInventoryConfig extends IBaseConfig { - kind: "aki-inventory"; + kind: "spt-inventory"; /** Should new items purchased by flagged as found in raid */ newItemsMarkedFound: boolean; randomLootContainers: Record; diff --git a/TypeScript/24WebSocket/types/models/spt/config/IItemConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/IItemConfig.d.ts index 40daa68..b9dfaea 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/IItemConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/IItemConfig.d.ts @@ -1,8 +1,10 @@ -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IItemConfig extends IBaseConfig { - kind: "aki-item"; + kind: "spt-item"; /** Items that should be globally blacklisted */ blacklist: string[]; + /** Items that should not be lootable from any location */ + lootableItemBlacklist: string[]; /** items that should not be given as rewards */ rewardItemBlacklist: string[]; /** Items that can only be found on bosses */ diff --git a/TypeScript/24WebSocket/types/models/spt/config/ILocaleConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/ILocaleConfig.d.ts index bf57df6..c3de13e 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/ILocaleConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/ILocaleConfig.d.ts @@ -1,6 +1,6 @@ -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILocaleConfig extends IBaseConfig { - kind: "aki-locale"; + kind: "spt-locale"; /** e.g. ru/en/cn/fr etc, or 'system', will take computer locale setting */ gameLocale: string; /** e.g. ru/en/cn/fr etc, or 'system', will take computer locale setting */ diff --git a/TypeScript/24WebSocket/types/models/spt/config/ILocationConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/ILocationConfig.d.ts index 87ef6b5..1e113b2 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/ILocationConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/ILocationConfig.d.ts @@ -1,8 +1,8 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; -import { BossLocationSpawn, Wave } from "@spt-aki/models/eft/common/ILocationBase"; -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { MinMax } from "@spt/models/common/MinMax"; +import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILocationConfig extends IBaseConfig { - kind: "aki-location"; + kind: "spt-location"; /** Waves with a min/max of the same value don't spawn any bots, bsg only spawn the difference between min and max */ fixEmptyBotWavesSettings: IFixEmptyBotWavesSettings; /** Rogues are classified as bosses and spawn immediatly, this can result in no scavs spawning, delay rogues spawning to allow scavs to spawn first */ diff --git a/TypeScript/24WebSocket/types/models/spt/config/ILootConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/ILootConfig.d.ts index 003d6c6..e22c3ea 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/ILootConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/ILootConfig.d.ts @@ -1,7 +1,7 @@ -import { Spawnpoint } from "@spt-aki/models/eft/common/ILooseLoot"; -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { Spawnpoint } from "@spt/models/eft/common/ILooseLoot"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILootConfig extends IBaseConfig { - kind: "aki-loot"; + kind: "spt-loot"; /** Spawn positions to add into a map, key=mapid */ looseLoot: Record; /** Loose loot probability adjustments to apply on game start */ diff --git a/TypeScript/24WebSocket/types/models/spt/config/ILostOnDeathConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/ILostOnDeathConfig.d.ts index d440e91..8574646 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/ILostOnDeathConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/ILostOnDeathConfig.d.ts @@ -1,6 +1,6 @@ -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILostOnDeathConfig extends IBaseConfig { - kind: "aki-lostondeath"; + kind: "spt-lostondeath"; /** What equipment in each slot should be lost on death */ equipment: Equipment; /** Should special slot items be removed from quest inventory on death e.g. wifi camera/markers */ diff --git a/TypeScript/24WebSocket/types/models/spt/config/IMatchConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/IMatchConfig.d.ts index dc7a8cb..f6a9b4c 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/IMatchConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/IMatchConfig.d.ts @@ -1,5 +1,5 @@ -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IMatchConfig extends IBaseConfig { - kind: "aki-match"; + kind: "spt-match"; enabled: boolean; } diff --git a/TypeScript/24WebSocket/types/models/spt/config/IPlayerScavConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/IPlayerScavConfig.d.ts index e5abca2..8834768 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/IPlayerScavConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/IPlayerScavConfig.d.ts @@ -1,7 +1,7 @@ -import { GenerationData } from "@spt-aki/models/eft/common/tables/IBotType"; -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPlayerScavConfig extends IBaseConfig { - kind: "aki-playerscav"; + kind: "spt-playerscav"; karmaLevel: Record; } export interface KarmaLevel { diff --git a/TypeScript/24WebSocket/types/models/spt/config/IPmChatResponse.d.ts b/TypeScript/24WebSocket/types/models/spt/config/IPmChatResponse.d.ts index 50afdbc..83fab34 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/IPmChatResponse.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/IPmChatResponse.d.ts @@ -1,6 +1,6 @@ -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPmcChatResponse extends IBaseConfig { - kind: "aki-pmcchatresponse"; + kind: "spt-pmcchatresponse"; victim: IResponseSettings; killer: IResponseSettings; } diff --git a/TypeScript/24WebSocket/types/models/spt/config/IPmcConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/IPmcConfig.d.ts index 89223b2..00fabb3 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/IPmcConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/IPmcConfig.d.ts @@ -1,8 +1,8 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; -import { MemberCategory } from "@spt-aki/models/enums/MemberCategory"; -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { MinMax } from "@spt/models/common/MinMax"; +import { MemberCategory } from "@spt/models/enums/MemberCategory"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPmcConfig extends IBaseConfig { - kind: "aki-pmc"; + kind: "spt-pmc"; /** What game version should the PMC have */ gameVersionWeight: Record; /** What account type should the PMC have */ diff --git a/TypeScript/24WebSocket/types/models/spt/config/IQuestConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/IQuestConfig.d.ts index c190d01..a4257cf 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/IQuestConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/IQuestConfig.d.ts @@ -1,10 +1,10 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; -import { ELocationName } from "@spt-aki/models/enums/ELocationName"; -import { SeasonalEventType } from "@spt-aki/models/enums/SeasonalEventType"; -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { MinMax } from "@spt/models/common/MinMax"; +import { ELocationName } from "@spt/models/enums/ELocationName"; +import { SeasonalEventType } from "@spt/models/enums/SeasonalEventType"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IQuestConfig extends IBaseConfig { - kind: "aki-quest"; - redeemTime: number; + kind: "spt-quest"; + mailRedeemTimeHours: Record; questTemplateIds: IPlayerTypeQuestIds; /** Show non-seasonal quests be shown to player */ showNonSeasonalEventQuests: boolean; @@ -47,11 +47,14 @@ export interface IRepeatableQuestConfig { /** Item tplIds to ignore when generating rewards */ rewardBlacklist: string[]; rewardAmmoStackMinSize: number; + freeChangesAvailable: number; + freeChanges: number; } export interface IRewardScaling { levels: number[]; experience: number[]; roubles: number[]; + gpCoins: number[]; items: number[]; reputation: number[]; rewardSpread: number; diff --git a/TypeScript/24WebSocket/types/models/spt/config/IRagfairConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/IRagfairConfig.d.ts index eac8a53..bb318de 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/IRagfairConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/IRagfairConfig.d.ts @@ -1,7 +1,7 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; -import { IBaseConfig, IRunIntervalValues } from "@spt-aki/models/spt/config/IBaseConfig"; +import { MinMax } from "@spt/models/common/MinMax"; +import { IBaseConfig, IRunIntervalValues } from "@spt/models/spt/config/IBaseConfig"; export interface IRagfairConfig extends IBaseConfig { - kind: "aki-ragfair"; + kind: "spt-ragfair"; /** How many seconds should pass before expired offers and procesed + player offers checked if sold */ runIntervalSeconds: number; /** Default values used to hydrate `runIntervalSeconds` with */ diff --git a/TypeScript/24WebSocket/types/models/spt/config/IRepairConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/IRepairConfig.d.ts index 9e23cc4..12a87fa 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/IRepairConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/IRepairConfig.d.ts @@ -1,7 +1,7 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { MinMax } from "@spt/models/common/MinMax"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IRepairConfig extends IBaseConfig { - kind: "aki-repair"; + kind: "spt-repair"; priceMultiplier: number; applyRandomizeDurabilityLoss: boolean; weaponSkillRepairGain: number; diff --git a/TypeScript/24WebSocket/types/models/spt/config/IScavCaseConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/IScavCaseConfig.d.ts index 92f2722..f2ff2f2 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/IScavCaseConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/IScavCaseConfig.d.ts @@ -1,7 +1,7 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { MinMax } from "@spt/models/common/MinMax"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IScavCaseConfig extends IBaseConfig { - kind: "aki-scavcase"; + kind: "spt-scavcase"; rewardItemValueRangeRub: Record; moneyRewards: MoneyRewards; ammoRewards: AmmoRewards; @@ -16,6 +16,7 @@ export interface MoneyRewards { rubCount: MoneyLevels; usdCount: MoneyLevels; eurCount: MoneyLevels; + gpCount: MoneyLevels; } export interface MoneyLevels { common: MinMax; diff --git a/TypeScript/24WebSocket/types/models/spt/config/ISeasonalEventConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/ISeasonalEventConfig.d.ts index 6334570..da7070b 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/ISeasonalEventConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/ISeasonalEventConfig.d.ts @@ -1,8 +1,8 @@ -import { BossLocationSpawn } from "@spt-aki/models/eft/common/ILocationBase"; -import { SeasonalEventType } from "@spt-aki/models/enums/SeasonalEventType"; -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { BossLocationSpawn } from "@spt/models/eft/common/ILocationBase"; +import { SeasonalEventType } from "@spt/models/enums/SeasonalEventType"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ISeasonalEventConfig extends IBaseConfig { - kind: "aki-seasonalevents"; + kind: "spt-seasonalevents"; enableSeasonalEventDetection: boolean; /** event / botType / equipSlot / itemid */ eventGear: Record>>>; diff --git a/TypeScript/24WebSocket/types/models/spt/config/ITraderConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/ITraderConfig.d.ts index 8a906c7..d60b496 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/ITraderConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/ITraderConfig.d.ts @@ -1,8 +1,8 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; -import { LootRequest } from "@spt-aki/models/spt/services/LootRequest"; +import { MinMax } from "@spt/models/common/MinMax"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; +import { LootRequest } from "@spt/models/spt/services/LootRequest"; export interface ITraderConfig extends IBaseConfig { - kind: "aki-trader"; + kind: "spt-trader"; updateTime: UpdateTime[]; purchasesAreFoundInRaid: boolean; /** Should trader reset times be set based on server start time (false = bsg time - on the hour) */ @@ -27,7 +27,8 @@ export interface FenceConfig { presetPriceMult: number; armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax; weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax; - chancePlateExistsInArmorPercent: number; + /** Keyed to plate protection level */ + chancePlateExistsInArmorPercent: Record; /** Key: item tpl */ itemStackSizeOverrideMinMax: Record; itemTypeLimits: Record; diff --git a/TypeScript/24WebSocket/types/models/spt/config/IWeatherConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/IWeatherConfig.d.ts index 845cb77..970ade5 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/IWeatherConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/IWeatherConfig.d.ts @@ -1,9 +1,9 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; -import { Season } from "@spt-aki/models/enums/Season"; -import { WindDirection } from "@spt-aki/models/enums/WindDirection"; -import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig"; +import { MinMax } from "@spt/models/common/MinMax"; +import { Season } from "@spt/models/enums/Season"; +import { WindDirection } from "@spt/models/enums/WindDirection"; +import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IWeatherConfig extends IBaseConfig { - kind: "aki-weather"; + kind: "spt-weather"; acceleration: number; weather: Weather; seasonDates: ISeasonDateTimes[]; diff --git a/TypeScript/24WebSocket/types/models/spt/controllers/IBotController.d.ts b/TypeScript/24WebSocket/types/models/spt/controllers/IBotController.d.ts index 3e8e035..e577497 100644 --- a/TypeScript/24WebSocket/types/models/spt/controllers/IBotController.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/controllers/IBotController.d.ts @@ -1,7 +1,7 @@ -import { IGenerateBotsRequestData } from "@spt-aki/models/eft/bot/IGenerateBotsRequestData"; -import { IBotBase } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { IBotCore } from "@spt-aki/models/eft/common/tables/IBotCore"; -import { Difficulty } from "@spt-aki/models/eft/common/tables/IBotType"; +import { IGenerateBotsRequestData } from "@spt/models/eft/bot/IGenerateBotsRequestData"; +import { IBotBase } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotCore } from "@spt/models/eft/common/tables/IBotCore"; +import { Difficulty } from "@spt/models/eft/common/tables/IBotType"; export interface IBotController { getBotLimit(type: string): number; getBotDifficulty(type: string, difficulty: string): IBotCore | Difficulty; diff --git a/TypeScript/24WebSocket/types/models/spt/dialog/ISendMessageDetails.d.ts b/TypeScript/24WebSocket/types/models/spt/dialog/ISendMessageDetails.d.ts index 05b3bcd..1625f47 100644 --- a/TypeScript/24WebSocket/types/models/spt/dialog/ISendMessageDetails.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/dialog/ISendMessageDetails.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ISystemData, IUserDialogInfo, MessageContentRagfair } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { MessageType } from "@spt-aki/models/enums/MessageType"; -import { Traders } from "@spt-aki/models/enums/Traders"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ISystemData, IUserDialogInfo, MessageContentRagfair } from "@spt/models/eft/profile/ISptProfile"; +import { MessageType } from "@spt/models/enums/MessageType"; +import { Traders } from "@spt/models/enums/Traders"; export interface ISendMessageDetails { /** Player id */ recipientId: string; @@ -40,5 +40,7 @@ export declare enum ProfileChangeEventType { PROFILE_LEVEL = "ProfileLevel", SKILL_POINTS = "SkillPoints", EXAMINE_ALL_ITEMS = "ExamineAllItems", - UNLOCK_TRADER = "UnlockTrader" + UNLOCK_TRADER = "UnlockTrader", + ASSORT_UNLOCK_RULE = "AssortmentUnlockRule", + HIDEOUT_AREA_LEVEL = "HideoutAreaLevel" } diff --git a/TypeScript/24WebSocket/types/models/spt/fence/ICreateFenceAssortsResult.d.ts b/TypeScript/24WebSocket/types/models/spt/fence/ICreateFenceAssortsResult.d.ts index 8b90799..553f4e2 100644 --- a/TypeScript/24WebSocket/types/models/spt/fence/ICreateFenceAssortsResult.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/fence/ICreateFenceAssortsResult.d.ts @@ -1,5 +1,5 @@ -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { IBarterScheme } from "@spt-aki/models/eft/common/tables/ITrader"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; export interface ICreateFenceAssortsResult { sptItems: Item[][]; barter_scheme: Record; diff --git a/TypeScript/24WebSocket/types/models/spt/generators/IBotGenerator.d.ts b/TypeScript/24WebSocket/types/models/spt/generators/IBotGenerator.d.ts index 2cb337d..e46ce24 100644 --- a/TypeScript/24WebSocket/types/models/spt/generators/IBotGenerator.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/generators/IBotGenerator.d.ts @@ -1,5 +1,5 @@ -import { Inventory as PmcInventory } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { Chances, Generation, Inventory } from "@spt-aki/models/eft/common/tables/IBotType"; +import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { Chances, Generation, Inventory } from "@spt/models/eft/common/tables/IBotType"; export interface IBotGenerator { generateInventory(templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory; } diff --git a/TypeScript/24WebSocket/types/models/spt/generators/ILocationGenerator.d.ts b/TypeScript/24WebSocket/types/models/spt/generators/ILocationGenerator.d.ts index 781e575..2df98e7 100644 --- a/TypeScript/24WebSocket/types/models/spt/generators/ILocationGenerator.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/generators/ILocationGenerator.d.ts @@ -1,5 +1,5 @@ -import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "@spt-aki/models/eft/common/ILocation"; -import { ILooseLoot, SpawnpointTemplate } from "@spt-aki/models/eft/common/ILooseLoot"; +import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "@spt/models/eft/common/ILocation"; +import { ILooseLoot, SpawnpointTemplate } from "@spt/models/eft/common/ILooseLoot"; export interface ILocationGenerator { generateContainerLoot(containerIn: IStaticContainerProps, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerProps; generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): SpawnpointTemplate[]; diff --git a/TypeScript/24WebSocket/types/models/spt/generators/IRagfairAssortGenerator.d.ts b/TypeScript/24WebSocket/types/models/spt/generators/IRagfairAssortGenerator.d.ts index bcd26c2..193b685 100644 --- a/TypeScript/24WebSocket/types/models/spt/generators/IRagfairAssortGenerator.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/generators/IRagfairAssortGenerator.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; +import { Item } from "@spt/models/eft/common/tables/IItem"; export interface IRagfairAssortGenerator { getAssortItems(): Item[]; } diff --git a/TypeScript/24WebSocket/types/models/spt/generators/IRagfairOfferGenerator.d.ts b/TypeScript/24WebSocket/types/models/spt/generators/IRagfairOfferGenerator.d.ts index bb5fdf9..66d28e9 100644 --- a/TypeScript/24WebSocket/types/models/spt/generators/IRagfairOfferGenerator.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/generators/IRagfairOfferGenerator.d.ts @@ -1,6 +1,6 @@ -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { IBarterScheme } from "@spt-aki/models/eft/common/tables/ITrader"; -import { IRagfairOffer } from "@spt-aki/models/eft/ragfair/IRagfairOffer"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; +import { IRagfairOffer } from "@spt/models/eft/ragfair/IRagfairOffer"; export interface IRagfairOfferGenerator { createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece: boolean): IRagfairOffer; } diff --git a/TypeScript/24WebSocket/types/models/spt/hideout/IHideout.d.ts b/TypeScript/24WebSocket/types/models/spt/hideout/IHideout.d.ts new file mode 100644 index 0000000..57fed47 --- /dev/null +++ b/TypeScript/24WebSocket/types/models/spt/hideout/IHideout.d.ts @@ -0,0 +1,12 @@ +import { IHideoutArea } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutScavCase } from "@spt/models/eft/hideout/IHideoutScavCase"; +import { IHideoutSettingsBase } from "@spt/models/eft/hideout/IHideoutSettingsBase"; +import { IQteData } from "@spt/models/eft/hideout/IQteData"; +export interface IHideout { + areas: IHideoutArea[]; + production: IHideoutProduction[]; + scavcase: IHideoutScavCase[]; + settings: IHideoutSettingsBase; + qte: IQteData[]; +} diff --git a/TypeScript/24WebSocket/types/models/spt/inventory/IOwnerInventoryItems.d.ts b/TypeScript/24WebSocket/types/models/spt/inventory/IOwnerInventoryItems.d.ts new file mode 100644 index 0000000..dd4efab --- /dev/null +++ b/TypeScript/24WebSocket/types/models/spt/inventory/IOwnerInventoryItems.d.ts @@ -0,0 +1,9 @@ +import { Item } from "@spt/models/eft/common/tables/IItem"; +export interface IOwnerInventoryItems { + /** Inventory items from source */ + from: Item[]; + /** Inventory items at destination */ + to: Item[]; + sameInventory: boolean; + isMail: boolean; +} diff --git a/TypeScript/24WebSocket/types/models/spt/logging/IClientLogRequest.d.ts b/TypeScript/24WebSocket/types/models/spt/logging/IClientLogRequest.d.ts index b7e1b36..71f0b38 100644 --- a/TypeScript/24WebSocket/types/models/spt/logging/IClientLogRequest.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/logging/IClientLogRequest.d.ts @@ -1,4 +1,4 @@ -import { LogLevel } from "@spt-aki/models/spt/logging/LogLevel"; +import { LogLevel } from "@spt/models/spt/logging/LogLevel"; export interface IClientLogRequest { Source: string; Level: LogLevel | string; diff --git a/TypeScript/24WebSocket/types/models/spt/mod/IPackageJsonData.d.ts b/TypeScript/24WebSocket/types/models/spt/mod/IPackageJsonData.d.ts index 0f6f26c..d21e5f1 100644 --- a/TypeScript/24WebSocket/types/models/spt/mod/IPackageJsonData.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/mod/IPackageJsonData.d.ts @@ -8,7 +8,7 @@ export interface IPackageJsonData { url: string; author: string; version: string; - akiVersion: string; + sptVersion: string; /** We deliberately purge this data */ scripts: Record; devDependencies: Record; diff --git a/TypeScript/24WebSocket/types/models/spt/mod/NewItemDetails.d.ts b/TypeScript/24WebSocket/types/models/spt/mod/NewItemDetails.d.ts index 304462d..65996c1 100644 --- a/TypeScript/24WebSocket/types/models/spt/mod/NewItemDetails.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/mod/NewItemDetails.d.ts @@ -1,4 +1,4 @@ -import { ITemplateItem, Props } from "@spt-aki/models/eft/common/tables/ITemplateItem"; +import { ITemplateItem, Props } from "@spt/models/eft/common/tables/ITemplateItem"; export declare abstract class NewItemDetailsBase { /** Price of the item on flea market */ fleaPriceRoubles: number; diff --git a/TypeScript/24WebSocket/types/models/spt/quests/IGetRepeatableByIdResult.d.ts b/TypeScript/24WebSocket/types/models/spt/quests/IGetRepeatableByIdResult.d.ts new file mode 100644 index 0000000..cd57ec5 --- /dev/null +++ b/TypeScript/24WebSocket/types/models/spt/quests/IGetRepeatableByIdResult.d.ts @@ -0,0 +1,5 @@ +import { IPmcDataRepeatableQuest, IRepeatableQuest } from "@spt/models/eft/common/tables/IRepeatableQuests"; +export interface IGetRepeatableByIdResult { + quest: IRepeatableQuest; + repeatableType: IPmcDataRepeatableQuest; +} diff --git a/TypeScript/24WebSocket/types/models/spt/repeatable/IQuestRewardValues.d.ts b/TypeScript/24WebSocket/types/models/spt/repeatable/IQuestRewardValues.d.ts new file mode 100644 index 0000000..bcee532 --- /dev/null +++ b/TypeScript/24WebSocket/types/models/spt/repeatable/IQuestRewardValues.d.ts @@ -0,0 +1,9 @@ +export interface IQuestRewardValues { + skillPointReward: number; + skillRewardChance: number; + rewardReputation: number; + rewardNumItems: number; + rewardRoubles: number; + gpCoinRewardCount: number; + rewardXP: number; +} diff --git a/TypeScript/24WebSocket/types/models/spt/repeatable/IQuestTypePool.d.ts b/TypeScript/24WebSocket/types/models/spt/repeatable/IQuestTypePool.d.ts index bce68e8..200303b 100644 --- a/TypeScript/24WebSocket/types/models/spt/repeatable/IQuestTypePool.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/repeatable/IQuestTypePool.d.ts @@ -1,4 +1,4 @@ -import { ELocationName } from "@spt-aki/models/enums/ELocationName"; +import { ELocationName } from "@spt/models/enums/ELocationName"; export interface IQuestTypePool { types: string[]; pool: IQuestPool; diff --git a/TypeScript/24WebSocket/types/models/spt/server/ExhaustableArray.d.ts b/TypeScript/24WebSocket/types/models/spt/server/ExhaustableArray.d.ts index c7801eb..c27f41f 100644 --- a/TypeScript/24WebSocket/types/models/spt/server/ExhaustableArray.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/server/ExhaustableArray.d.ts @@ -1,17 +1,17 @@ -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class ExhaustableArray implements IExhaustableArray { private itemPool; private randomUtil; private cloner; private pool; constructor(itemPool: T[], randomUtil: RandomUtil, cloner: ICloner); - getRandomValue(): T; - getFirstValue(): T; + getRandomValue(): T | undefined; + getFirstValue(): T | undefined; hasValues(): boolean; } export interface IExhaustableArray { - getRandomValue(): T; - getFirstValue(): T; + getRandomValue(): T | undefined; + getFirstValue(): T | undefined; hasValues(): boolean; } diff --git a/TypeScript/24WebSocket/types/models/spt/server/IDatabaseTables.d.ts b/TypeScript/24WebSocket/types/models/spt/server/IDatabaseTables.d.ts index 1140374..8e4bc6a 100644 --- a/TypeScript/24WebSocket/types/models/spt/server/IDatabaseTables.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/server/IDatabaseTables.d.ts @@ -1,58 +1,20 @@ -import { IGlobals } from "@spt-aki/models/eft/common/IGlobals"; -import { IAchievement } from "@spt-aki/models/eft/common/tables/IAchievement"; -import { IBotBase } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { IBotCore } from "@spt-aki/models/eft/common/tables/IBotCore"; -import { IBotType } from "@spt-aki/models/eft/common/tables/IBotType"; -import { ICustomizationItem } from "@spt-aki/models/eft/common/tables/ICustomizationItem"; -import { IHandbookBase } from "@spt-aki/models/eft/common/tables/IHandbookBase"; -import { IMatch } from "@spt-aki/models/eft/common/tables/IMatch"; -import { IProfileTemplates } from "@spt-aki/models/eft/common/tables/IProfileTemplate"; -import { IQuest } from "@spt-aki/models/eft/common/tables/IQuest"; -import { IRepeatableQuestDatabase } from "@spt-aki/models/eft/common/tables/IRepeatableQuests"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { ITrader } from "@spt-aki/models/eft/common/tables/ITrader"; -import { IHideoutArea } from "@spt-aki/models/eft/hideout/IHideoutArea"; -import { IHideoutProduction } from "@spt-aki/models/eft/hideout/IHideoutProduction"; -import { IHideoutScavCase } from "@spt-aki/models/eft/hideout/IHideoutScavCase"; -import { IHideoutSettingsBase } from "@spt-aki/models/eft/hideout/IHideoutSettingsBase"; -import { IQteData } from "@spt-aki/models/eft/hideout/IQteData"; -import { IDefaultEquipmentPreset } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { ILocaleBase } from "@spt-aki/models/spt/server/ILocaleBase"; -import { ILocations } from "@spt-aki/models/spt/server/ILocations"; -import { IServerBase } from "@spt-aki/models/spt/server/IServerBase"; -import { ISettingsBase } from "@spt-aki/models/spt/server/ISettingsBase"; +import { IGlobals } from "@spt/models/eft/common/IGlobals"; +import { IMatch } from "@spt/models/eft/common/tables/IMatch"; +import { ITrader } from "@spt/models/eft/common/tables/ITrader"; +import { IBots } from "@spt/models/spt/bots/IBots"; +import { IHideout } from "@spt/models/spt/hideout/IHideout"; +import { ILocaleBase } from "@spt/models/spt/server/ILocaleBase"; +import { ILocations } from "@spt/models/spt/server/ILocations"; +import { IServerBase } from "@spt/models/spt/server/IServerBase"; +import { ISettingsBase } from "@spt/models/spt/server/ISettingsBase"; +import { ITemplates } from "@spt/models/spt/templates/ITemplates"; export interface IDatabaseTables { - bots?: { - types: Record; - base: IBotBase; - core: IBotCore; - }; - hideout?: { - areas: IHideoutArea[]; - production: IHideoutProduction[]; - scavcase: IHideoutScavCase[]; - settings: IHideoutSettingsBase; - qte: IQteData[]; - }; + bots?: IBots; + hideout?: IHideout; locales?: ILocaleBase; locations?: ILocations; match?: IMatch; - templates?: { - character: string[]; - items: Record; - quests: Record; - repeatableQuests: IRepeatableQuestDatabase; - handbook: IHandbookBase; - customization: Record; - /** The profile templates listed in the launcher on profile creation, split by account type (e.g. Standard) then side (e.g. bear/usec) */ - profiles: IProfileTemplates; - /** Flea prices of items - gathered from online flea market dump */ - prices: Record; - /** Default equipment loadouts that show on main inventory screen */ - defaultEquipmentPresets: IDefaultEquipmentPreset[]; - /** Achievements */ - achievements: IAchievement[]; - }; + templates?: ITemplates; traders?: Record; globals?: IGlobals; server?: IServerBase; diff --git a/TypeScript/24WebSocket/types/models/spt/server/ILocations.d.ts b/TypeScript/24WebSocket/types/models/spt/server/ILocations.d.ts index 0101dd7..500efcc 100644 --- a/TypeScript/24WebSocket/types/models/spt/server/ILocations.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/server/ILocations.d.ts @@ -1,5 +1,5 @@ -import { ILocation } from "@spt-aki/models/eft/common/ILocation"; -import { ILocationsBase } from "@spt-aki/models/eft/common/tables/ILocationsBase"; +import { ILocation } from "@spt/models/eft/common/ILocation"; +import { ILocationsBase } from "@spt/models/eft/common/tables/ILocationsBase"; export interface ILocations { bigmap?: ILocation; develop?: ILocation; diff --git a/TypeScript/24WebSocket/types/models/spt/server/ISettingsBase.d.ts b/TypeScript/24WebSocket/types/models/spt/server/ISettingsBase.d.ts index 6be2ad4..2bca633 100644 --- a/TypeScript/24WebSocket/types/models/spt/server/ISettingsBase.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/server/ISettingsBase.d.ts @@ -28,6 +28,7 @@ export interface Config { WeaponOverlapDistanceCulling: number; WebDiagnosticsEnabled: boolean; NetworkStateView: INetworkStateView; + WsReconnectionDelays: string[]; } export interface FramerateLimit { MaxFramerateGameLimit: number; diff --git a/TypeScript/24WebSocket/types/models/spt/services/CustomPreset.d.ts b/TypeScript/24WebSocket/types/models/spt/services/CustomPreset.d.ts index 989c58f..3301a55 100644 --- a/TypeScript/24WebSocket/types/models/spt/services/CustomPreset.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/services/CustomPreset.d.ts @@ -1,4 +1,4 @@ -import { IPreset } from "@spt-aki/models/eft/common/IGlobals"; +import { IPreset } from "@spt/models/eft/common/IGlobals"; export interface CustomPreset { key: string; preset: IPreset; diff --git a/TypeScript/24WebSocket/types/models/spt/services/CustomTraderAssortData.d.ts b/TypeScript/24WebSocket/types/models/spt/services/CustomTraderAssortData.d.ts index 289d66a..7ad6341 100644 --- a/TypeScript/24WebSocket/types/models/spt/services/CustomTraderAssortData.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/services/CustomTraderAssortData.d.ts @@ -1,5 +1,5 @@ -import { ITraderAssort } from "@spt-aki/models/eft/common/tables/ITrader"; -import { Traders } from "@spt-aki/models/enums/Traders"; +import { ITraderAssort } from "@spt/models/eft/common/tables/ITrader"; +import { Traders } from "@spt/models/enums/Traders"; export interface CustomTraderAssortData { traderId: Traders; assorts: ITraderAssort; diff --git a/TypeScript/24WebSocket/types/models/spt/services/IInsuranceEquipmentPkg.d.ts b/TypeScript/24WebSocket/types/models/spt/services/IInsuranceEquipmentPkg.d.ts index 379f3c9..92d0565 100644 --- a/TypeScript/24WebSocket/types/models/spt/services/IInsuranceEquipmentPkg.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/services/IInsuranceEquipmentPkg.d.ts @@ -1,5 +1,5 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Item } from "@spt/models/eft/common/tables/IItem"; export interface IInsuranceEquipmentPkg { sessionID: string; pmcData: IPmcData; diff --git a/TypeScript/24WebSocket/types/models/spt/services/ITraderServiceModel.d.ts b/TypeScript/24WebSocket/types/models/spt/services/ITraderServiceModel.d.ts index 3fe43c4..165b65c 100644 --- a/TypeScript/24WebSocket/types/models/spt/services/ITraderServiceModel.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/services/ITraderServiceModel.d.ts @@ -1,4 +1,4 @@ -import { TraderServiceType } from "@spt-aki/models/enums/TraderServiceType"; +import { TraderServiceType } from "@spt/models/enums/TraderServiceType"; export interface ITraderServiceModel { serviceType: TraderServiceType; itemsToPay?: { diff --git a/TypeScript/24WebSocket/types/models/spt/services/LootRequest.d.ts b/TypeScript/24WebSocket/types/models/spt/services/LootRequest.d.ts index d4fa902..c52a876 100644 --- a/TypeScript/24WebSocket/types/models/spt/services/LootRequest.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/services/LootRequest.d.ts @@ -1,4 +1,4 @@ -import { MinMax } from "@spt-aki/models/common/MinMax"; +import { MinMax } from "@spt/models/common/MinMax"; export interface LootRequest { weaponPresetCount: MinMax; armorPresetCount: MinMax; @@ -11,4 +11,5 @@ export interface LootRequest { itemStackLimits: Record; armorLevelWhitelist: number[]; allowBossItems: boolean; + useRewarditemBlacklist?: boolean; } diff --git a/TypeScript/24WebSocket/types/models/spt/templates/ITemplates.d.ts b/TypeScript/24WebSocket/types/models/spt/templates/ITemplates.d.ts new file mode 100644 index 0000000..c2ebbf9 --- /dev/null +++ b/TypeScript/24WebSocket/types/models/spt/templates/ITemplates.d.ts @@ -0,0 +1,24 @@ +import { IAchievement } from "@spt/models/eft/common/tables/IAchievement"; +import { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomizationItem"; +import { IHandbookBase } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IProfileTemplates } from "@spt/models/eft/common/tables/IProfileTemplate"; +import { IQuest } from "@spt/models/eft/common/tables/IQuest"; +import { IRepeatableQuestDatabase } from "@spt/models/eft/common/tables/IRepeatableQuests"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { IDefaultEquipmentPreset } from "@spt/models/eft/profile/ISptProfile"; +export interface ITemplates { + character: string[]; + items: Record; + quests: Record; + repeatableQuests: IRepeatableQuestDatabase; + handbook: IHandbookBase; + customization: Record; + /** The profile templates listed in the launcher on profile creation, split by account type (e.g. Standard) then side (e.g. bear/usec) */ + profiles: IProfileTemplates; + /** Flea prices of items - gathered from online flea market dump */ + prices: Record; + /** Default equipment loadouts that show on main inventory screen */ + defaultEquipmentPresets: IDefaultEquipmentPreset[]; + /** Achievements */ + achievements: IAchievement[]; +} diff --git a/TypeScript/24WebSocket/types/models/spt/utils/IAsyncQueue.d.ts b/TypeScript/24WebSocket/types/models/spt/utils/IAsyncQueue.d.ts index 464139a..4bc9199 100644 --- a/TypeScript/24WebSocket/types/models/spt/utils/IAsyncQueue.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/utils/IAsyncQueue.d.ts @@ -1,4 +1,4 @@ -import { ICommand } from "@spt-aki/models/spt/utils/ICommand"; +import { ICommand } from "@spt/models/spt/utils/ICommand"; export interface IAsyncQueue { waitFor(command: ICommand): Promise; } diff --git a/TypeScript/24WebSocket/types/models/spt/utils/ILogger.d.ts b/TypeScript/24WebSocket/types/models/spt/utils/ILogger.d.ts index 340f26b..1b9726d 100644 --- a/TypeScript/24WebSocket/types/models/spt/utils/ILogger.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/utils/ILogger.d.ts @@ -1,6 +1,6 @@ -import { Daum } from "@spt-aki/models/eft/itemEvent/IItemEventRouterRequest"; -import { LogBackgroundColor } from "@spt-aki/models/spt/logging/LogBackgroundColor"; -import { LogTextColor } from "@spt-aki/models/spt/logging/LogTextColor"; +import { Daum } from "@spt/models/eft/itemEvent/IItemEventRouterRequest"; +import { LogBackgroundColor } from "@spt/models/spt/logging/LogBackgroundColor"; +import { LogTextColor } from "@spt/models/spt/logging/LogTextColor"; export interface ILogger { writeToLogFile(data: string | Daum): void; log(data: string | Record | Error, color: string, backgroundColor?: string): void; diff --git a/TypeScript/24WebSocket/types/routers/EventOutputHolder.d.ts b/TypeScript/24WebSocket/types/routers/EventOutputHolder.d.ts index 2a7cd70..ef20706 100644 --- a/TypeScript/24WebSocket/types/routers/EventOutputHolder.d.ts +++ b/TypeScript/24WebSocket/types/routers/EventOutputHolder.d.ts @@ -1,20 +1,23 @@ -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IHideoutImprovement, Productive, TraderInfo } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { TraderData } from "@spt-aki/models/eft/itemEvent/IItemEventRouterBase"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IHideoutImprovement, Productive, TraderInfo } from "@spt/models/eft/common/tables/IBotBase"; +import { TraderData } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class EventOutputHolder { protected profileHelper: ProfileHelper; protected timeUtil: TimeUtil; protected cloner: ICloner; - /** What has client been informed of this game session */ - protected clientActiveSessionStorage: Record; + }>>; + protected outputStore: Record; constructor(profileHelper: ProfileHelper, timeUtil: TimeUtil, cloner: ICloner); - protected output: IItemEventRouterResponse; getOutput(sessionID: string): IItemEventRouterResponse; /** * Reset the response object to a default state @@ -44,7 +47,7 @@ export declare class EventOutputHolder { * @param pmcData Player profile * @returns dictionary of hideout productions */ - protected getProductionsFromProfileAndFlagComplete(productions: Record): Record; + protected getProductionsFromProfileAndFlagComplete(productions: Record, sessionId: string): Record | undefined; /** * Required as continuous productions don't reset and stay at 100% completion but client thinks it hasn't started * @param productions Productions in a profile diff --git a/TypeScript/24WebSocket/types/routers/HttpRouter.d.ts b/TypeScript/24WebSocket/types/routers/HttpRouter.d.ts index 7de8b20..3fdb53f 100644 --- a/TypeScript/24WebSocket/types/routers/HttpRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/HttpRouter.d.ts @@ -1,6 +1,6 @@ /// import { IncomingMessage } from "node:http"; -import { DynamicRouter, Router, StaticRouter } from "@spt-aki/di/Router"; +import { DynamicRouter, Router, StaticRouter } from "@spt/di/Router"; export declare class HttpRouter { protected staticRouters: StaticRouter[]; protected dynamicRoutes: DynamicRouter[]; diff --git a/TypeScript/24WebSocket/types/routers/ImageRouter.d.ts b/TypeScript/24WebSocket/types/routers/ImageRouter.d.ts index 9d13b7a..eb3697f 100644 --- a/TypeScript/24WebSocket/types/routers/ImageRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/ImageRouter.d.ts @@ -1,8 +1,8 @@ /// import { IncomingMessage, ServerResponse } from "node:http"; -import { ImageRouteService } from "@spt-aki/services/mod/image/ImageRouteService"; -import { HttpFileUtil } from "@spt-aki/utils/HttpFileUtil"; -import { VFS } from "@spt-aki/utils/VFS"; +import { ImageRouteService } from "@spt/services/mod/image/ImageRouteService"; +import { HttpFileUtil } from "@spt/utils/HttpFileUtil"; +import { VFS } from "@spt/utils/VFS"; export declare class ImageRouter { protected vfs: VFS; protected imageRouteService: ImageRouteService; diff --git a/TypeScript/24WebSocket/types/routers/ItemEventRouter.d.ts b/TypeScript/24WebSocket/types/routers/ItemEventRouter.d.ts index fa154ef..f8043c0 100644 --- a/TypeScript/24WebSocket/types/routers/ItemEventRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/ItemEventRouter.d.ts @@ -1,11 +1,11 @@ -import { ItemEventRouterDefinition } from "@spt-aki/di/Router"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { IItemEventRouterRequest } from "@spt-aki/models/eft/itemEvent/IItemEventRouterRequest"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; +import { ItemEventRouterDefinition } from "@spt/di/Router"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IItemEventRouterRequest } from "@spt/models/eft/itemEvent/IItemEventRouterRequest"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class ItemEventRouter { protected logger: ILogger; protected profileHelper: ProfileHelper; diff --git a/TypeScript/24WebSocket/types/routers/dynamic/BotDynamicRouter.d.ts b/TypeScript/24WebSocket/types/routers/dynamic/BotDynamicRouter.d.ts index 5c54065..9b1131d 100644 --- a/TypeScript/24WebSocket/types/routers/dynamic/BotDynamicRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/dynamic/BotDynamicRouter.d.ts @@ -1,5 +1,5 @@ -import { BotCallbacks } from "@spt-aki/callbacks/BotCallbacks"; -import { DynamicRouter } from "@spt-aki/di/Router"; +import { BotCallbacks } from "@spt/callbacks/BotCallbacks"; +import { DynamicRouter } from "@spt/di/Router"; export declare class BotDynamicRouter extends DynamicRouter { protected botCallbacks: BotCallbacks; constructor(botCallbacks: BotCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/dynamic/BundleDynamicRouter.d.ts b/TypeScript/24WebSocket/types/routers/dynamic/BundleDynamicRouter.d.ts index c73860a..c552c6d 100644 --- a/TypeScript/24WebSocket/types/routers/dynamic/BundleDynamicRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/dynamic/BundleDynamicRouter.d.ts @@ -1,5 +1,5 @@ -import { BundleCallbacks } from "@spt-aki/callbacks/BundleCallbacks"; -import { DynamicRouter } from "@spt-aki/di/Router"; +import { BundleCallbacks } from "@spt/callbacks/BundleCallbacks"; +import { DynamicRouter } from "@spt/di/Router"; export declare class BundleDynamicRouter extends DynamicRouter { protected bundleCallbacks: BundleCallbacks; constructor(bundleCallbacks: BundleCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/dynamic/CustomizationDynamicRouter.d.ts b/TypeScript/24WebSocket/types/routers/dynamic/CustomizationDynamicRouter.d.ts index 79e60e6..b7f4956 100644 --- a/TypeScript/24WebSocket/types/routers/dynamic/CustomizationDynamicRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/dynamic/CustomizationDynamicRouter.d.ts @@ -1,5 +1,5 @@ -import { CustomizationCallbacks } from "@spt-aki/callbacks/CustomizationCallbacks"; -import { DynamicRouter } from "@spt-aki/di/Router"; +import { CustomizationCallbacks } from "@spt/callbacks/CustomizationCallbacks"; +import { DynamicRouter } from "@spt/di/Router"; export declare class CustomizationDynamicRouter extends DynamicRouter { protected customizationCallbacks: CustomizationCallbacks; constructor(customizationCallbacks: CustomizationCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/dynamic/DataDynamicRouter.d.ts b/TypeScript/24WebSocket/types/routers/dynamic/DataDynamicRouter.d.ts index 098748f..d71fde1 100644 --- a/TypeScript/24WebSocket/types/routers/dynamic/DataDynamicRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/dynamic/DataDynamicRouter.d.ts @@ -1,5 +1,5 @@ -import { DataCallbacks } from "@spt-aki/callbacks/DataCallbacks"; -import { DynamicRouter } from "@spt-aki/di/Router"; +import { DataCallbacks } from "@spt/callbacks/DataCallbacks"; +import { DynamicRouter } from "@spt/di/Router"; export declare class DataDynamicRouter extends DynamicRouter { protected dataCallbacks: DataCallbacks; constructor(dataCallbacks: DataCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/dynamic/HttpDynamicRouter.d.ts b/TypeScript/24WebSocket/types/routers/dynamic/HttpDynamicRouter.d.ts index 5fda392..01d1ffb 100644 --- a/TypeScript/24WebSocket/types/routers/dynamic/HttpDynamicRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/dynamic/HttpDynamicRouter.d.ts @@ -1,5 +1,5 @@ -import { DynamicRouter } from "@spt-aki/di/Router"; -import { ImageRouter } from "@spt-aki/routers/ImageRouter"; +import { DynamicRouter } from "@spt/di/Router"; +import { ImageRouter } from "@spt/routers/ImageRouter"; export declare class HttpDynamicRouter extends DynamicRouter { protected imageRouter: ImageRouter; constructor(imageRouter: ImageRouter); diff --git a/TypeScript/24WebSocket/types/routers/dynamic/InraidDynamicRouter.d.ts b/TypeScript/24WebSocket/types/routers/dynamic/InraidDynamicRouter.d.ts index b68282e..e4cf1eb 100644 --- a/TypeScript/24WebSocket/types/routers/dynamic/InraidDynamicRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/dynamic/InraidDynamicRouter.d.ts @@ -1,5 +1,5 @@ -import { InraidCallbacks } from "@spt-aki/callbacks/InraidCallbacks"; -import { DynamicRouter } from "@spt-aki/di/Router"; +import { InraidCallbacks } from "@spt/callbacks/InraidCallbacks"; +import { DynamicRouter } from "@spt/di/Router"; export declare class InraidDynamicRouter extends DynamicRouter { protected inraidCallbacks: InraidCallbacks; constructor(inraidCallbacks: InraidCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/dynamic/LocationDynamicRouter.d.ts b/TypeScript/24WebSocket/types/routers/dynamic/LocationDynamicRouter.d.ts index aef354f..a52f8d6 100644 --- a/TypeScript/24WebSocket/types/routers/dynamic/LocationDynamicRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/dynamic/LocationDynamicRouter.d.ts @@ -1,5 +1,5 @@ -import { LocationCallbacks } from "@spt-aki/callbacks/LocationCallbacks"; -import { DynamicRouter } from "@spt-aki/di/Router"; +import { LocationCallbacks } from "@spt/callbacks/LocationCallbacks"; +import { DynamicRouter } from "@spt/di/Router"; export declare class LocationDynamicRouter extends DynamicRouter { protected locationCallbacks: LocationCallbacks; constructor(locationCallbacks: LocationCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/dynamic/NotifierDynamicRouter.d.ts b/TypeScript/24WebSocket/types/routers/dynamic/NotifierDynamicRouter.d.ts index f1c0ea7..c00c80e 100644 --- a/TypeScript/24WebSocket/types/routers/dynamic/NotifierDynamicRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/dynamic/NotifierDynamicRouter.d.ts @@ -1,5 +1,5 @@ -import { NotifierCallbacks } from "@spt-aki/callbacks/NotifierCallbacks"; -import { DynamicRouter } from "@spt-aki/di/Router"; +import { NotifierCallbacks } from "@spt/callbacks/NotifierCallbacks"; +import { DynamicRouter } from "@spt/di/Router"; export declare class NotifierDynamicRouter extends DynamicRouter { protected notifierCallbacks: NotifierCallbacks; constructor(notifierCallbacks: NotifierCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/dynamic/TraderDynamicRouter.d.ts b/TypeScript/24WebSocket/types/routers/dynamic/TraderDynamicRouter.d.ts index 2cde752..cdd6b71 100644 --- a/TypeScript/24WebSocket/types/routers/dynamic/TraderDynamicRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/dynamic/TraderDynamicRouter.d.ts @@ -1,5 +1,5 @@ -import { TraderCallbacks } from "@spt-aki/callbacks/TraderCallbacks"; -import { DynamicRouter } from "@spt-aki/di/Router"; +import { TraderCallbacks } from "@spt/callbacks/TraderCallbacks"; +import { DynamicRouter } from "@spt/di/Router"; export declare class TraderDynamicRouter extends DynamicRouter { protected traderCallbacks: TraderCallbacks; constructor(traderCallbacks: TraderCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/item_events/CustomizationItemEventRouter.d.ts b/TypeScript/24WebSocket/types/routers/item_events/CustomizationItemEventRouter.d.ts index 02f5ff9..c9babf3 100644 --- a/TypeScript/24WebSocket/types/routers/item_events/CustomizationItemEventRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/item_events/CustomizationItemEventRouter.d.ts @@ -1,7 +1,7 @@ -import { CustomizationCallbacks } from "@spt-aki/callbacks/CustomizationCallbacks"; -import { HandledRoute, ItemEventRouterDefinition } from "@spt-aki/di/Router"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; +import { CustomizationCallbacks } from "@spt/callbacks/CustomizationCallbacks"; +import { HandledRoute, ItemEventRouterDefinition } from "@spt/di/Router"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; export declare class CustomizationItemEventRouter extends ItemEventRouterDefinition { protected customizationCallbacks: CustomizationCallbacks; constructor(customizationCallbacks: CustomizationCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/item_events/HealthItemEventRouter.d.ts b/TypeScript/24WebSocket/types/routers/item_events/HealthItemEventRouter.d.ts index d082053..490884f 100644 --- a/TypeScript/24WebSocket/types/routers/item_events/HealthItemEventRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/item_events/HealthItemEventRouter.d.ts @@ -1,7 +1,7 @@ -import { HealthCallbacks } from "@spt-aki/callbacks/HealthCallbacks"; -import { HandledRoute, ItemEventRouterDefinition } from "@spt-aki/di/Router"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; +import { HealthCallbacks } from "@spt/callbacks/HealthCallbacks"; +import { HandledRoute, ItemEventRouterDefinition } from "@spt/di/Router"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; export declare class HealthItemEventRouter extends ItemEventRouterDefinition { protected healthCallbacks: HealthCallbacks; constructor(healthCallbacks: HealthCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/item_events/HideoutItemEventRouter.d.ts b/TypeScript/24WebSocket/types/routers/item_events/HideoutItemEventRouter.d.ts index 9d1a604..6839fee 100644 --- a/TypeScript/24WebSocket/types/routers/item_events/HideoutItemEventRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/item_events/HideoutItemEventRouter.d.ts @@ -1,7 +1,7 @@ -import { HideoutCallbacks } from "@spt-aki/callbacks/HideoutCallbacks"; -import { HandledRoute, ItemEventRouterDefinition } from "@spt-aki/di/Router"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; +import { HideoutCallbacks } from "@spt/callbacks/HideoutCallbacks"; +import { HandledRoute, ItemEventRouterDefinition } from "@spt/di/Router"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; export declare class HideoutItemEventRouter extends ItemEventRouterDefinition { protected hideoutCallbacks: HideoutCallbacks; constructor(hideoutCallbacks: HideoutCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/item_events/InsuranceItemEventRouter.d.ts b/TypeScript/24WebSocket/types/routers/item_events/InsuranceItemEventRouter.d.ts index 7ff4d30..af2b3dc 100644 --- a/TypeScript/24WebSocket/types/routers/item_events/InsuranceItemEventRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/item_events/InsuranceItemEventRouter.d.ts @@ -1,7 +1,7 @@ -import { InsuranceCallbacks } from "@spt-aki/callbacks/InsuranceCallbacks"; -import { HandledRoute, ItemEventRouterDefinition } from "@spt-aki/di/Router"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; +import { InsuranceCallbacks } from "@spt/callbacks/InsuranceCallbacks"; +import { HandledRoute, ItemEventRouterDefinition } from "@spt/di/Router"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; export declare class InsuranceItemEventRouter extends ItemEventRouterDefinition { protected insuranceCallbacks: InsuranceCallbacks; constructor(insuranceCallbacks: InsuranceCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/item_events/InventoryItemEventRouter.d.ts b/TypeScript/24WebSocket/types/routers/item_events/InventoryItemEventRouter.d.ts index 98c5376..660de81 100644 --- a/TypeScript/24WebSocket/types/routers/item_events/InventoryItemEventRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/item_events/InventoryItemEventRouter.d.ts @@ -1,8 +1,8 @@ -import { HideoutCallbacks } from "@spt-aki/callbacks/HideoutCallbacks"; -import { InventoryCallbacks } from "@spt-aki/callbacks/InventoryCallbacks"; -import { HandledRoute, ItemEventRouterDefinition } from "@spt-aki/di/Router"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; +import { HideoutCallbacks } from "@spt/callbacks/HideoutCallbacks"; +import { InventoryCallbacks } from "@spt/callbacks/InventoryCallbacks"; +import { HandledRoute, ItemEventRouterDefinition } from "@spt/di/Router"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; export declare class InventoryItemEventRouter extends ItemEventRouterDefinition { protected inventoryCallbacks: InventoryCallbacks; protected hideoutCallbacks: HideoutCallbacks; diff --git a/TypeScript/24WebSocket/types/routers/item_events/NoteItemEventRouter.d.ts b/TypeScript/24WebSocket/types/routers/item_events/NoteItemEventRouter.d.ts index 88102be..b415c3a 100644 --- a/TypeScript/24WebSocket/types/routers/item_events/NoteItemEventRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/item_events/NoteItemEventRouter.d.ts @@ -1,8 +1,8 @@ -import { NoteCallbacks } from "@spt-aki/callbacks/NoteCallbacks"; -import { HandledRoute, ItemEventRouterDefinition } from "@spt-aki/di/Router"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { INoteActionData } from "@spt-aki/models/eft/notes/INoteActionData"; +import { NoteCallbacks } from "@spt/callbacks/NoteCallbacks"; +import { HandledRoute, ItemEventRouterDefinition } from "@spt/di/Router"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { INoteActionData } from "@spt/models/eft/notes/INoteActionData"; export declare class NoteItemEventRouter extends ItemEventRouterDefinition { protected noteCallbacks: NoteCallbacks; constructor(noteCallbacks: NoteCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/item_events/QuestItemEventRouter.d.ts b/TypeScript/24WebSocket/types/routers/item_events/QuestItemEventRouter.d.ts index 8ef3360..1ce94f9 100644 --- a/TypeScript/24WebSocket/types/routers/item_events/QuestItemEventRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/item_events/QuestItemEventRouter.d.ts @@ -1,8 +1,8 @@ -import { QuestCallbacks } from "@spt-aki/callbacks/QuestCallbacks"; -import { HandledRoute, ItemEventRouterDefinition } from "@spt-aki/di/Router"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; +import { QuestCallbacks } from "@spt/callbacks/QuestCallbacks"; +import { HandledRoute, ItemEventRouterDefinition } from "@spt/di/Router"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; export declare class QuestItemEventRouter extends ItemEventRouterDefinition { protected logger: ILogger; protected questCallbacks: QuestCallbacks; diff --git a/TypeScript/24WebSocket/types/routers/item_events/RagfairItemEventRouter.d.ts b/TypeScript/24WebSocket/types/routers/item_events/RagfairItemEventRouter.d.ts index f1cf326..09cdbf6 100644 --- a/TypeScript/24WebSocket/types/routers/item_events/RagfairItemEventRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/item_events/RagfairItemEventRouter.d.ts @@ -1,7 +1,7 @@ -import { RagfairCallbacks } from "@spt-aki/callbacks/RagfairCallbacks"; -import { HandledRoute, ItemEventRouterDefinition } from "@spt-aki/di/Router"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; +import { RagfairCallbacks } from "@spt/callbacks/RagfairCallbacks"; +import { HandledRoute, ItemEventRouterDefinition } from "@spt/di/Router"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; export declare class RagfairItemEventRouter extends ItemEventRouterDefinition { protected ragfairCallbacks: RagfairCallbacks; constructor(ragfairCallbacks: RagfairCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/item_events/RepairItemEventRouter.d.ts b/TypeScript/24WebSocket/types/routers/item_events/RepairItemEventRouter.d.ts index e901dad..d2f857d 100644 --- a/TypeScript/24WebSocket/types/routers/item_events/RepairItemEventRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/item_events/RepairItemEventRouter.d.ts @@ -1,7 +1,7 @@ -import { RepairCallbacks } from "@spt-aki/callbacks/RepairCallbacks"; -import { HandledRoute, ItemEventRouterDefinition } from "@spt-aki/di/Router"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; +import { RepairCallbacks } from "@spt/callbacks/RepairCallbacks"; +import { HandledRoute, ItemEventRouterDefinition } from "@spt/di/Router"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; export declare class RepairItemEventRouter extends ItemEventRouterDefinition { protected repairCallbacks: RepairCallbacks; constructor(repairCallbacks: RepairCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/item_events/TradeItemEventRouter.d.ts b/TypeScript/24WebSocket/types/routers/item_events/TradeItemEventRouter.d.ts index e998e48..5617ab3 100644 --- a/TypeScript/24WebSocket/types/routers/item_events/TradeItemEventRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/item_events/TradeItemEventRouter.d.ts @@ -1,7 +1,7 @@ -import { TradeCallbacks } from "@spt-aki/callbacks/TradeCallbacks"; -import { HandledRoute, ItemEventRouterDefinition } from "@spt-aki/di/Router"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; +import { TradeCallbacks } from "@spt/callbacks/TradeCallbacks"; +import { HandledRoute, ItemEventRouterDefinition } from "@spt/di/Router"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; export declare class TradeItemEventRouter extends ItemEventRouterDefinition { protected tradeCallbacks: TradeCallbacks; constructor(tradeCallbacks: TradeCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/item_events/WishlistItemEventRouter.d.ts b/TypeScript/24WebSocket/types/routers/item_events/WishlistItemEventRouter.d.ts index de60c39..bc6d257 100644 --- a/TypeScript/24WebSocket/types/routers/item_events/WishlistItemEventRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/item_events/WishlistItemEventRouter.d.ts @@ -1,7 +1,7 @@ -import { WishlistCallbacks } from "@spt-aki/callbacks/WishlistCallbacks"; -import { HandledRoute, ItemEventRouterDefinition } from "@spt-aki/di/Router"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; +import { WishlistCallbacks } from "@spt/callbacks/WishlistCallbacks"; +import { HandledRoute, ItemEventRouterDefinition } from "@spt/di/Router"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; export declare class WishlistItemEventRouter extends ItemEventRouterDefinition { protected wishlistCallbacks: WishlistCallbacks; constructor(wishlistCallbacks: WishlistCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/save_load/HealthSaveLoadRouter.d.ts b/TypeScript/24WebSocket/types/routers/save_load/HealthSaveLoadRouter.d.ts index 1ecfa44..df04248 100644 --- a/TypeScript/24WebSocket/types/routers/save_load/HealthSaveLoadRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/save_load/HealthSaveLoadRouter.d.ts @@ -1,6 +1,6 @@ -import { HandledRoute, SaveLoadRouter } from "@spt-aki/di/Router"; -import { IAkiProfile } from "@spt-aki/models/eft/profile/IAkiProfile"; +import { HandledRoute, SaveLoadRouter } from "@spt/di/Router"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; export declare class HealthSaveLoadRouter extends SaveLoadRouter { getHandledRoutes(): HandledRoute[]; - handleLoad(profile: IAkiProfile): IAkiProfile; + handleLoad(profile: ISptProfile): ISptProfile; } diff --git a/TypeScript/24WebSocket/types/routers/save_load/InraidSaveLoadRouter.d.ts b/TypeScript/24WebSocket/types/routers/save_load/InraidSaveLoadRouter.d.ts index 7cc9a08..3ea61fa 100644 --- a/TypeScript/24WebSocket/types/routers/save_load/InraidSaveLoadRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/save_load/InraidSaveLoadRouter.d.ts @@ -1,6 +1,6 @@ -import { HandledRoute, SaveLoadRouter } from "@spt-aki/di/Router"; -import { IAkiProfile } from "@spt-aki/models/eft/profile/IAkiProfile"; +import { HandledRoute, SaveLoadRouter } from "@spt/di/Router"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; export declare class InraidSaveLoadRouter extends SaveLoadRouter { getHandledRoutes(): HandledRoute[]; - handleLoad(profile: IAkiProfile): IAkiProfile; + handleLoad(profile: ISptProfile): ISptProfile; } diff --git a/TypeScript/24WebSocket/types/routers/save_load/InsuranceSaveLoadRouter.d.ts b/TypeScript/24WebSocket/types/routers/save_load/InsuranceSaveLoadRouter.d.ts index af5222a..ba8cb8a 100644 --- a/TypeScript/24WebSocket/types/routers/save_load/InsuranceSaveLoadRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/save_load/InsuranceSaveLoadRouter.d.ts @@ -1,6 +1,6 @@ -import { HandledRoute, SaveLoadRouter } from "@spt-aki/di/Router"; -import { IAkiProfile } from "@spt-aki/models/eft/profile/IAkiProfile"; +import { HandledRoute, SaveLoadRouter } from "@spt/di/Router"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; export declare class InsuranceSaveLoadRouter extends SaveLoadRouter { getHandledRoutes(): HandledRoute[]; - handleLoad(profile: IAkiProfile): IAkiProfile; + handleLoad(profile: ISptProfile): ISptProfile; } diff --git a/TypeScript/24WebSocket/types/routers/save_load/ProfileSaveLoadRouter.d.ts b/TypeScript/24WebSocket/types/routers/save_load/ProfileSaveLoadRouter.d.ts index 8047834..77d50bd 100644 --- a/TypeScript/24WebSocket/types/routers/save_load/ProfileSaveLoadRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/save_load/ProfileSaveLoadRouter.d.ts @@ -1,6 +1,6 @@ -import { HandledRoute, SaveLoadRouter } from "@spt-aki/di/Router"; -import { IAkiProfile } from "@spt-aki/models/eft/profile/IAkiProfile"; +import { HandledRoute, SaveLoadRouter } from "@spt/di/Router"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; export declare class ProfileSaveLoadRouter extends SaveLoadRouter { getHandledRoutes(): HandledRoute[]; - handleLoad(profile: IAkiProfile): IAkiProfile; + handleLoad(profile: ISptProfile): ISptProfile; } diff --git a/TypeScript/24WebSocket/types/routers/serializers/BundleSerializer.d.ts b/TypeScript/24WebSocket/types/routers/serializers/BundleSerializer.d.ts index 52db030..dc71cd8 100644 --- a/TypeScript/24WebSocket/types/routers/serializers/BundleSerializer.d.ts +++ b/TypeScript/24WebSocket/types/routers/serializers/BundleSerializer.d.ts @@ -1,9 +1,9 @@ /// import { IncomingMessage, ServerResponse } from "node:http"; -import { Serializer } from "@spt-aki/di/Serializer"; -import { BundleLoader } from "@spt-aki/loaders/BundleLoader"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { HttpFileUtil } from "@spt-aki/utils/HttpFileUtil"; +import { Serializer } from "@spt/di/Serializer"; +import { BundleLoader } from "@spt/loaders/BundleLoader"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { HttpFileUtil } from "@spt/utils/HttpFileUtil"; export declare class BundleSerializer extends Serializer { protected logger: ILogger; protected bundleLoader: BundleLoader; diff --git a/TypeScript/24WebSocket/types/routers/serializers/ImageSerializer.d.ts b/TypeScript/24WebSocket/types/routers/serializers/ImageSerializer.d.ts index 3b1ff6d..5c77243 100644 --- a/TypeScript/24WebSocket/types/routers/serializers/ImageSerializer.d.ts +++ b/TypeScript/24WebSocket/types/routers/serializers/ImageSerializer.d.ts @@ -1,7 +1,7 @@ /// import { IncomingMessage, ServerResponse } from "node:http"; -import { Serializer } from "@spt-aki/di/Serializer"; -import { ImageRouter } from "@spt-aki/routers/ImageRouter"; +import { Serializer } from "@spt/di/Serializer"; +import { ImageRouter } from "@spt/routers/ImageRouter"; export declare class ImageSerializer extends Serializer { protected imageRouter: ImageRouter; constructor(imageRouter: ImageRouter); diff --git a/TypeScript/24WebSocket/types/routers/serializers/NotifySerializer.d.ts b/TypeScript/24WebSocket/types/routers/serializers/NotifySerializer.d.ts index f8730b6..8c07f81 100644 --- a/TypeScript/24WebSocket/types/routers/serializers/NotifySerializer.d.ts +++ b/TypeScript/24WebSocket/types/routers/serializers/NotifySerializer.d.ts @@ -1,9 +1,9 @@ /// import { IncomingMessage, ServerResponse } from "node:http"; -import { NotifierController } from "@spt-aki/controllers/NotifierController"; -import { Serializer } from "@spt-aki/di/Serializer"; -import { HttpServerHelper } from "@spt-aki/helpers/HttpServerHelper"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; +import { NotifierController } from "@spt/controllers/NotifierController"; +import { Serializer } from "@spt/di/Serializer"; +import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { JsonUtil } from "@spt/utils/JsonUtil"; export declare class NotifySerializer extends Serializer { protected notifierController: NotifierController; protected jsonUtil: JsonUtil; diff --git a/TypeScript/24WebSocket/types/routers/static/AchievementStaticRouter.d.ts b/TypeScript/24WebSocket/types/routers/static/AchievementStaticRouter.d.ts index 80c5e71..80e3ae6 100644 --- a/TypeScript/24WebSocket/types/routers/static/AchievementStaticRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/static/AchievementStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { AchievementCallbacks } from "@spt-aki/callbacks/AchievementCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { AchievementCallbacks } from "@spt/callbacks/AchievementCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class AchievementStaticRouter extends StaticRouter { protected achievementCallbacks: AchievementCallbacks; constructor(achievementCallbacks: AchievementCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/static/BotStaticRouter.d.ts b/TypeScript/24WebSocket/types/routers/static/BotStaticRouter.d.ts index e7e9ff5..2a164a5 100644 --- a/TypeScript/24WebSocket/types/routers/static/BotStaticRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/static/BotStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { BotCallbacks } from "@spt-aki/callbacks/BotCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { BotCallbacks } from "@spt/callbacks/BotCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class BotStaticRouter extends StaticRouter { protected botCallbacks: BotCallbacks; constructor(botCallbacks: BotCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/static/BuildStaticRouter.d.ts b/TypeScript/24WebSocket/types/routers/static/BuildStaticRouter.d.ts index e351d19..c5c3a5e 100644 --- a/TypeScript/24WebSocket/types/routers/static/BuildStaticRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/static/BuildStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { BuildsCallbacks } from "@spt-aki/callbacks/BuildsCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { BuildsCallbacks } from "@spt/callbacks/BuildsCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class BuildsStaticRouter extends StaticRouter { protected buildsCallbacks: BuildsCallbacks; constructor(buildsCallbacks: BuildsCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/static/BundleStaticRouter.d.ts b/TypeScript/24WebSocket/types/routers/static/BundleStaticRouter.d.ts index 62056ba..070d981 100644 --- a/TypeScript/24WebSocket/types/routers/static/BundleStaticRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/static/BundleStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { BundleCallbacks } from "@spt-aki/callbacks/BundleCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { BundleCallbacks } from "@spt/callbacks/BundleCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class BundleStaticRouter extends StaticRouter { protected bundleCallbacks: BundleCallbacks; constructor(bundleCallbacks: BundleCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/static/ClientLogStaticRouter.d.ts b/TypeScript/24WebSocket/types/routers/static/ClientLogStaticRouter.d.ts index 6ae3f50..2df39ad 100644 --- a/TypeScript/24WebSocket/types/routers/static/ClientLogStaticRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/static/ClientLogStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { ClientLogCallbacks } from "@spt-aki/callbacks/ClientLogCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { ClientLogCallbacks } from "@spt/callbacks/ClientLogCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class ClientLogStaticRouter extends StaticRouter { protected clientLogCallbacks: ClientLogCallbacks; constructor(clientLogCallbacks: ClientLogCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/static/CustomizationStaticRouter.d.ts b/TypeScript/24WebSocket/types/routers/static/CustomizationStaticRouter.d.ts index cebf043..5d80536 100644 --- a/TypeScript/24WebSocket/types/routers/static/CustomizationStaticRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/static/CustomizationStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { CustomizationCallbacks } from "@spt-aki/callbacks/CustomizationCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { CustomizationCallbacks } from "@spt/callbacks/CustomizationCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class CustomizationStaticRouter extends StaticRouter { protected customizationCallbacks: CustomizationCallbacks; constructor(customizationCallbacks: CustomizationCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/static/DataStaticRouter.d.ts b/TypeScript/24WebSocket/types/routers/static/DataStaticRouter.d.ts index 7e84ae1..f59a136 100644 --- a/TypeScript/24WebSocket/types/routers/static/DataStaticRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/static/DataStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { DataCallbacks } from "@spt-aki/callbacks/DataCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { DataCallbacks } from "@spt/callbacks/DataCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class DataStaticRouter extends StaticRouter { protected dataCallbacks: DataCallbacks; constructor(dataCallbacks: DataCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/static/DialogStaticRouter.d.ts b/TypeScript/24WebSocket/types/routers/static/DialogStaticRouter.d.ts index 7f3ef7a..5a17ba4 100644 --- a/TypeScript/24WebSocket/types/routers/static/DialogStaticRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/static/DialogStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { DialogueCallbacks } from "@spt-aki/callbacks/DialogueCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { DialogueCallbacks } from "@spt/callbacks/DialogueCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class DialogStaticRouter extends StaticRouter { protected dialogueCallbacks: DialogueCallbacks; constructor(dialogueCallbacks: DialogueCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/static/GameStaticRouter.d.ts b/TypeScript/24WebSocket/types/routers/static/GameStaticRouter.d.ts index 878f494..bf045af 100644 --- a/TypeScript/24WebSocket/types/routers/static/GameStaticRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/static/GameStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { GameCallbacks } from "@spt-aki/callbacks/GameCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { GameCallbacks } from "@spt/callbacks/GameCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class GameStaticRouter extends StaticRouter { protected gameCallbacks: GameCallbacks; constructor(gameCallbacks: GameCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/static/HealthStaticRouter.d.ts b/TypeScript/24WebSocket/types/routers/static/HealthStaticRouter.d.ts index 79dedea..d968017 100644 --- a/TypeScript/24WebSocket/types/routers/static/HealthStaticRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/static/HealthStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { HealthCallbacks } from "@spt-aki/callbacks/HealthCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { HealthCallbacks } from "@spt/callbacks/HealthCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class HealthStaticRouter extends StaticRouter { protected healthCallbacks: HealthCallbacks; constructor(healthCallbacks: HealthCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/static/InraidStaticRouter.d.ts b/TypeScript/24WebSocket/types/routers/static/InraidStaticRouter.d.ts index eb9c3b1..2a0da3c 100644 --- a/TypeScript/24WebSocket/types/routers/static/InraidStaticRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/static/InraidStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { InraidCallbacks } from "@spt-aki/callbacks/InraidCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { InraidCallbacks } from "@spt/callbacks/InraidCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class InraidStaticRouter extends StaticRouter { protected inraidCallbacks: InraidCallbacks; constructor(inraidCallbacks: InraidCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/static/InsuranceStaticRouter.d.ts b/TypeScript/24WebSocket/types/routers/static/InsuranceStaticRouter.d.ts index 58c1583..99e394f 100644 --- a/TypeScript/24WebSocket/types/routers/static/InsuranceStaticRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/static/InsuranceStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { InsuranceCallbacks } from "@spt-aki/callbacks/InsuranceCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { InsuranceCallbacks } from "@spt/callbacks/InsuranceCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class InsuranceStaticRouter extends StaticRouter { protected insuranceCallbacks: InsuranceCallbacks; constructor(insuranceCallbacks: InsuranceCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/static/ItemEventStaticRouter.d.ts b/TypeScript/24WebSocket/types/routers/static/ItemEventStaticRouter.d.ts index 772493a..b23856d 100644 --- a/TypeScript/24WebSocket/types/routers/static/ItemEventStaticRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/static/ItemEventStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { ItemEventCallbacks } from "@spt-aki/callbacks/ItemEventCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { ItemEventCallbacks } from "@spt/callbacks/ItemEventCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class ItemEventStaticRouter extends StaticRouter { protected itemEventCallbacks: ItemEventCallbacks; constructor(itemEventCallbacks: ItemEventCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/static/LauncherStaticRouter.d.ts b/TypeScript/24WebSocket/types/routers/static/LauncherStaticRouter.d.ts index 46a5bd6..08312d2 100644 --- a/TypeScript/24WebSocket/types/routers/static/LauncherStaticRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/static/LauncherStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { LauncherCallbacks } from "@spt-aki/callbacks/LauncherCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { LauncherCallbacks } from "@spt/callbacks/LauncherCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class LauncherStaticRouter extends StaticRouter { protected launcherCallbacks: LauncherCallbacks; constructor(launcherCallbacks: LauncherCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/static/LocationStaticRouter.d.ts b/TypeScript/24WebSocket/types/routers/static/LocationStaticRouter.d.ts index f577ba9..9a2e16c 100644 --- a/TypeScript/24WebSocket/types/routers/static/LocationStaticRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/static/LocationStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { LocationCallbacks } from "@spt-aki/callbacks/LocationCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { LocationCallbacks } from "@spt/callbacks/LocationCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class LocationStaticRouter extends StaticRouter { protected locationCallbacks: LocationCallbacks; constructor(locationCallbacks: LocationCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/static/MatchStaticRouter.d.ts b/TypeScript/24WebSocket/types/routers/static/MatchStaticRouter.d.ts index e26c8bd..955ce34 100644 --- a/TypeScript/24WebSocket/types/routers/static/MatchStaticRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/static/MatchStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { MatchCallbacks } from "@spt-aki/callbacks/MatchCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { MatchCallbacks } from "@spt/callbacks/MatchCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class MatchStaticRouter extends StaticRouter { protected matchCallbacks: MatchCallbacks; constructor(matchCallbacks: MatchCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/static/NotifierStaticRouter.d.ts b/TypeScript/24WebSocket/types/routers/static/NotifierStaticRouter.d.ts index 9427d00..7cb4756 100644 --- a/TypeScript/24WebSocket/types/routers/static/NotifierStaticRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/static/NotifierStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { NotifierCallbacks } from "@spt-aki/callbacks/NotifierCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { NotifierCallbacks } from "@spt/callbacks/NotifierCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class NotifierStaticRouter extends StaticRouter { protected notifierCallbacks: NotifierCallbacks; constructor(notifierCallbacks: NotifierCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/static/ProfileStaticRouter.d.ts b/TypeScript/24WebSocket/types/routers/static/ProfileStaticRouter.d.ts index 31470f3..cb6aa84 100644 --- a/TypeScript/24WebSocket/types/routers/static/ProfileStaticRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/static/ProfileStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { ProfileCallbacks } from "@spt-aki/callbacks/ProfileCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { ProfileCallbacks } from "@spt/callbacks/ProfileCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class ProfileStaticRouter extends StaticRouter { protected profileCallbacks: ProfileCallbacks; constructor(profileCallbacks: ProfileCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/static/QuestStaticRouter.d.ts b/TypeScript/24WebSocket/types/routers/static/QuestStaticRouter.d.ts index a505e5c..9c0e710 100644 --- a/TypeScript/24WebSocket/types/routers/static/QuestStaticRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/static/QuestStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { QuestCallbacks } from "@spt-aki/callbacks/QuestCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { QuestCallbacks } from "@spt/callbacks/QuestCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class QuestStaticRouter extends StaticRouter { protected questCallbacks: QuestCallbacks; constructor(questCallbacks: QuestCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/static/RagfairStaticRouter.d.ts b/TypeScript/24WebSocket/types/routers/static/RagfairStaticRouter.d.ts index e56a9c1..475e1ee 100644 --- a/TypeScript/24WebSocket/types/routers/static/RagfairStaticRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/static/RagfairStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { RagfairCallbacks } from "@spt-aki/callbacks/RagfairCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { RagfairCallbacks } from "@spt/callbacks/RagfairCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class RagfairStaticRouter extends StaticRouter { protected ragfairCallbacks: RagfairCallbacks; constructor(ragfairCallbacks: RagfairCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/static/TraderStaticRouter.d.ts b/TypeScript/24WebSocket/types/routers/static/TraderStaticRouter.d.ts index 1b9cbd1..e7d5ee1 100644 --- a/TypeScript/24WebSocket/types/routers/static/TraderStaticRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/static/TraderStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { TraderCallbacks } from "@spt-aki/callbacks/TraderCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { TraderCallbacks } from "@spt/callbacks/TraderCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class TraderStaticRouter extends StaticRouter { protected traderCallbacks: TraderCallbacks; constructor(traderCallbacks: TraderCallbacks); diff --git a/TypeScript/24WebSocket/types/routers/static/WeatherStaticRouter.d.ts b/TypeScript/24WebSocket/types/routers/static/WeatherStaticRouter.d.ts index 499f911..d3055e6 100644 --- a/TypeScript/24WebSocket/types/routers/static/WeatherStaticRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/static/WeatherStaticRouter.d.ts @@ -1,5 +1,5 @@ -import { WeatherCallbacks } from "@spt-aki/callbacks/WeatherCallbacks"; -import { StaticRouter } from "@spt-aki/di/Router"; +import { WeatherCallbacks } from "@spt/callbacks/WeatherCallbacks"; +import { StaticRouter } from "@spt/di/Router"; export declare class WeatherStaticRouter extends StaticRouter { protected weatherCallbacks: WeatherCallbacks; constructor(weatherCallbacks: WeatherCallbacks); diff --git a/TypeScript/24WebSocket/types/servers/ConfigServer.d.ts b/TypeScript/24WebSocket/types/servers/ConfigServer.d.ts index c932dfe..6f9bc83 100644 --- a/TypeScript/24WebSocket/types/servers/ConfigServer.d.ts +++ b/TypeScript/24WebSocket/types/servers/ConfigServer.d.ts @@ -1,7 +1,7 @@ -import { ConfigTypes } from "@spt-aki/models/enums/ConfigTypes"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { VFS } from "@spt-aki/utils/VFS"; +import { ConfigTypes } from "@spt/models/enums/ConfigTypes"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { JsonUtil } from "@spt/utils/JsonUtil"; +import { VFS } from "@spt/utils/VFS"; export declare class ConfigServer { protected logger: ILogger; protected vfs: VFS; diff --git a/TypeScript/24WebSocket/types/servers/DatabaseServer.d.ts b/TypeScript/24WebSocket/types/servers/DatabaseServer.d.ts index fc69a61..c198a87 100644 --- a/TypeScript/24WebSocket/types/servers/DatabaseServer.d.ts +++ b/TypeScript/24WebSocket/types/servers/DatabaseServer.d.ts @@ -1,4 +1,4 @@ -import { IDatabaseTables } from "@spt-aki/models/spt/server/IDatabaseTables"; +import { IDatabaseTables } from "@spt/models/spt/server/IDatabaseTables"; export declare class DatabaseServer { protected tableData: IDatabaseTables; getTables(): IDatabaseTables; diff --git a/TypeScript/24WebSocket/types/servers/HttpServer.d.ts b/TypeScript/24WebSocket/types/servers/HttpServer.d.ts index 2ab3204..b00fe68 100644 --- a/TypeScript/24WebSocket/types/servers/HttpServer.d.ts +++ b/TypeScript/24WebSocket/types/servers/HttpServer.d.ts @@ -1,14 +1,14 @@ /// import { IncomingMessage, ServerResponse } from "node:http"; -import { ApplicationContext } from "@spt-aki/context/ApplicationContext"; -import { HttpServerHelper } from "@spt-aki/helpers/HttpServerHelper"; -import { IHttpConfig } from "@spt-aki/models/spt/config/IHttpConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { IHttpListener } from "@spt-aki/servers/http/IHttpListener"; -import { WebSocketServer } from "@spt-aki/servers/WebSocketServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { IHttpListener } from "@spt/servers/http/IHttpListener"; +import { WebSocketServer } from "@spt/servers/WebSocketServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; export declare class HttpServer { protected logger: ILogger; protected databaseServer: DatabaseServer; diff --git a/TypeScript/24WebSocket/types/servers/RagfairServer.d.ts b/TypeScript/24WebSocket/types/servers/RagfairServer.d.ts index f6f9730..af3acf3 100644 --- a/TypeScript/24WebSocket/types/servers/RagfairServer.d.ts +++ b/TypeScript/24WebSocket/types/servers/RagfairServer.d.ts @@ -1,15 +1,15 @@ -import { RagfairOfferGenerator } from "@spt-aki/generators/RagfairOfferGenerator"; -import { TraderAssortHelper } from "@spt-aki/helpers/TraderAssortHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { IRagfairOffer } from "@spt-aki/models/eft/ragfair/IRagfairOffer"; -import { ISearchRequestData } from "@spt-aki/models/eft/ragfair/ISearchRequestData"; -import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { RagfairCategoriesService } from "@spt-aki/services/RagfairCategoriesService"; -import { RagfairOfferService } from "@spt-aki/services/RagfairOfferService"; -import { RagfairRequiredItemsService } from "@spt-aki/services/RagfairRequiredItemsService"; +import { RagfairOfferGenerator } from "@spt/generators/RagfairOfferGenerator"; +import { TraderAssortHelper } from "@spt/helpers/TraderAssortHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { IRagfairOffer } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ISearchRequestData } from "@spt/models/eft/ragfair/ISearchRequestData"; +import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { RagfairCategoriesService } from "@spt/services/RagfairCategoriesService"; +import { RagfairOfferService } from "@spt/services/RagfairOfferService"; +import { RagfairRequiredItemsService } from "@spt/services/RagfairRequiredItemsService"; export declare class RagfairServer { protected logger: ILogger; protected ragfairOfferGenerator: RagfairOfferGenerator; diff --git a/TypeScript/24WebSocket/types/servers/SaveServer.d.ts b/TypeScript/24WebSocket/types/servers/SaveServer.d.ts index d61259b..54c0f0a 100644 --- a/TypeScript/24WebSocket/types/servers/SaveServer.d.ts +++ b/TypeScript/24WebSocket/types/servers/SaveServer.d.ts @@ -1,11 +1,11 @@ -import { SaveLoadRouter } from "@spt-aki/di/Router"; -import { IAkiProfile, Info } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { VFS } from "@spt-aki/utils/VFS"; -import { ConfigServer } from "./ConfigServer"; +import { SaveLoadRouter } from "@spt/di/Router"; +import { ISptProfile, Info } from "@spt/models/eft/profile/ISptProfile"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { JsonUtil } from "@spt/utils/JsonUtil"; +import { VFS } from "@spt/utils/VFS"; export declare class SaveServer { protected vfs: VFS; protected saveLoadRouters: SaveLoadRouter[]; @@ -24,7 +24,7 @@ export declare class SaveServer { * @param id Id for save callback * @param callback Callback to execute prior to running SaveServer.saveProfile() */ - addBeforeSaveCallback(id: string, callback: (profile: Partial) => Partial): void; + addBeforeSaveCallback(id: string, callback: (profile: Partial) => Partial): void; /** * Remove a callback from being executed prior to saving profile in SaveServer.saveProfile() * @param id Id of callback to remove @@ -41,14 +41,15 @@ export declare class SaveServer { /** * Get a player profile from memory * @param sessionId Session id - * @returns IAkiProfile + * @returns ISptProfile */ - getProfile(sessionId: string): IAkiProfile; + getProfile(sessionId: string): ISptProfile; + profileExists(id: string): boolean; /** * Get all profiles from memory - * @returns Dictionary of IAkiProfile + * @returns Dictionary of ISptProfile */ - getProfiles(): Record; + getProfiles(): Record; /** * Delete a profile by id * @param sessionID Id of profile to remove @@ -64,7 +65,7 @@ export declare class SaveServer { * Add full profile in memory by key (info.id) * @param profileDetails Profile to save */ - addProfile(profileDetails: IAkiProfile): void; + addProfile(profileDetails: ISptProfile): void; /** * Look up profile json in user/profiles by id and store in memory * Execute saveLoadRouters callbacks after being loaded into memory diff --git a/TypeScript/24WebSocket/types/servers/WebSocketServer.d.ts b/TypeScript/24WebSocket/types/servers/WebSocketServer.d.ts index 4200b5a..f4e07bb 100644 --- a/TypeScript/24WebSocket/types/servers/WebSocketServer.d.ts +++ b/TypeScript/24WebSocket/types/servers/WebSocketServer.d.ts @@ -1,12 +1,12 @@ /// import http, { IncomingMessage } from "node:http"; import { WebSocket, Server } from "ws"; -import { HttpServerHelper } from "@spt-aki/helpers/HttpServerHelper"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { IWebSocketConnectionHandler } from "./ws/IWebSocketConnectionHandler"; +import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { IWebSocketConnectionHandler } from "@spt/servers/ws/IWebSocketConnectionHandler"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { JsonUtil } from "@spt/utils/JsonUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class WebSocketServer { protected logger: ILogger; protected randomUtil: RandomUtil; diff --git a/TypeScript/23CustomAbstractChatBot/types/servers/http/AkiHttpListener.d.ts b/TypeScript/24WebSocket/types/servers/http/SptHttpListener.d.ts similarity index 72% rename from TypeScript/23CustomAbstractChatBot/types/servers/http/AkiHttpListener.d.ts rename to TypeScript/24WebSocket/types/servers/http/SptHttpListener.d.ts index 9499884..ef68143 100644 --- a/TypeScript/23CustomAbstractChatBot/types/servers/http/AkiHttpListener.d.ts +++ b/TypeScript/24WebSocket/types/servers/http/SptHttpListener.d.ts @@ -1,14 +1,14 @@ /// /// import { IncomingMessage, ServerResponse } from "node:http"; -import { Serializer } from "@spt-aki/di/Serializer"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { HttpRouter } from "@spt-aki/routers/HttpRouter"; -import { IHttpListener } from "@spt-aki/servers/http/IHttpListener"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -export declare class AkiHttpListener implements IHttpListener { +import { Serializer } from "@spt/di/Serializer"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { HttpRouter } from "@spt/routers/HttpRouter"; +import { IHttpListener } from "@spt/servers/http/IHttpListener"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; +import { JsonUtil } from "@spt/utils/JsonUtil"; +export declare class SptHttpListener implements IHttpListener { protected httpRouter: HttpRouter; protected serializers: Serializer[]; protected logger: ILogger; @@ -19,7 +19,7 @@ export declare class AkiHttpListener implements IHttpListener { constructor(httpRouter: HttpRouter, // TODO: delay required serializers: Serializer[], logger: ILogger, requestsLogger: ILogger, jsonUtil: JsonUtil, httpResponse: HttpResponseUtil, localisationService: LocalisationService); canHandle(_: string, req: IncomingMessage): boolean; - handle(sessionId: string, req: IncomingMessage, resp: ServerResponse): void; + handle(sessionId: string, req: IncomingMessage, resp: ServerResponse): Promise; /** * Send http response to the client * @param sessionID Player id @@ -29,7 +29,7 @@ export declare class AkiHttpListener implements IHttpListener { * @param output Server generated response data */ sendResponse(sessionID: string, req: IncomingMessage, resp: ServerResponse, body: Buffer, output: string): void; - getResponse(sessionID: string, req: IncomingMessage, body: Buffer): string; + getResponse(sessionID: string, req: IncomingMessage, body: Buffer): Promise; protected getBodyInfo(body: Buffer, requestUrl?: any): any; sendJson(resp: ServerResponse, output: string, sessionID: string): void; sendZlibJson(resp: ServerResponse, output: string, sessionID: string): void; diff --git a/TypeScript/24WebSocket/types/servers/ws/SptWebSocketConnectionHandler.d.ts b/TypeScript/24WebSocket/types/servers/ws/SptWebSocketConnectionHandler.d.ts new file mode 100644 index 0000000..98d0898 --- /dev/null +++ b/TypeScript/24WebSocket/types/servers/ws/SptWebSocketConnectionHandler.d.ts @@ -0,0 +1,32 @@ +/// +/// +import { IncomingMessage } from "http"; +import { WebSocket } from "ws"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; +import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { IWebSocketConnectionHandler } from "@spt/servers/ws/IWebSocketConnectionHandler"; +import { ISptWebSocketMessageHandler } from "@spt/servers/ws/message/ISptWebSocketMessageHandler"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { JsonUtil } from "@spt/utils/JsonUtil"; +export declare class SptWebSocketConnectionHandler implements IWebSocketConnectionHandler { + protected logger: ILogger; + protected profileHelper: ProfileHelper; + protected localisationService: LocalisationService; + protected configServer: ConfigServer; + protected jsonUtil: JsonUtil; + protected sptWebSocketMessageHandlers: ISptWebSocketMessageHandler[]; + protected httpConfig: IHttpConfig; + protected webSockets: Map; + protected defaultNotification: IWsNotificationEvent; + protected websocketPingHandler: NodeJS.Timeout | undefined; + constructor(logger: ILogger, profileHelper: ProfileHelper, localisationService: LocalisationService, configServer: ConfigServer, jsonUtil: JsonUtil, sptWebSocketMessageHandlers: ISptWebSocketMessageHandler[]); + getSocketId(): string; + getHookUrl(): string; + onConnection(ws: WebSocket, req: IncomingMessage): void; + sendMessage(sessionID: string, output: IWsNotificationEvent): void; + isConnectionWebSocket(sessionID: string): boolean; + getSessionWebSocket(sessionID: string): WebSocket; +} diff --git a/TypeScript/24WebSocket/types/servers/ws/message/DefaultAkiWebSocketMessageHandler.d.ts b/TypeScript/24WebSocket/types/servers/ws/message/DefaultAkiWebSocketMessageHandler.d.ts deleted file mode 100644 index f708e49..0000000 --- a/TypeScript/24WebSocket/types/servers/ws/message/DefaultAkiWebSocketMessageHandler.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { RawData, WebSocket } from "ws"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { IAkiWebSocketMessageHandler } from "@spt-aki/servers/ws/message/IAkiWebSocketMessageHandler"; -export declare class DefaultAkiWebSocketMessageHandler implements IAkiWebSocketMessageHandler { - protected logger: ILogger; - constructor(logger: ILogger); - onAkiMessage(sessionId: string, client: WebSocket, message: RawData): void; -} diff --git a/TypeScript/24WebSocket/types/servers/ws/message/DefaultSptWebSocketMessageHandler.d.ts b/TypeScript/24WebSocket/types/servers/ws/message/DefaultSptWebSocketMessageHandler.d.ts new file mode 100644 index 0000000..d5247ec --- /dev/null +++ b/TypeScript/24WebSocket/types/servers/ws/message/DefaultSptWebSocketMessageHandler.d.ts @@ -0,0 +1,8 @@ +import { RawData, WebSocket } from "ws"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ISptWebSocketMessageHandler } from "@spt/servers/ws/message/ISptWebSocketMessageHandler"; +export declare class DefaultSptWebSocketMessageHandler implements ISptWebSocketMessageHandler { + protected logger: ILogger; + constructor(logger: ILogger); + onSptMessage(sessionId: string, client: WebSocket, message: RawData): void; +} diff --git a/TypeScript/24WebSocket/types/servers/ws/message/IAkiWebSocketMessageHandler.d.ts b/TypeScript/24WebSocket/types/servers/ws/message/IAkiWebSocketMessageHandler.d.ts deleted file mode 100644 index ea2de1e..0000000 --- a/TypeScript/24WebSocket/types/servers/ws/message/IAkiWebSocketMessageHandler.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { RawData, WebSocket } from "ws"; -export interface IAkiWebSocketMessageHandler { - onAkiMessage(sessionID: string, client: WebSocket, message: RawData): void; -} diff --git a/TypeScript/24WebSocket/types/servers/ws/message/ISptWebSocketMessageHandler.d.ts b/TypeScript/24WebSocket/types/servers/ws/message/ISptWebSocketMessageHandler.d.ts new file mode 100644 index 0000000..137bc87 --- /dev/null +++ b/TypeScript/24WebSocket/types/servers/ws/message/ISptWebSocketMessageHandler.d.ts @@ -0,0 +1,4 @@ +import { RawData, WebSocket } from "ws"; +export interface ISptWebSocketMessageHandler { + onSptMessage(sessionID: string, client: WebSocket, message: RawData): void; +} diff --git a/TypeScript/24WebSocket/types/services/BotEquipmentFilterService.d.ts b/TypeScript/24WebSocket/types/services/BotEquipmentFilterService.d.ts index c66607f..780d7a2 100644 --- a/TypeScript/24WebSocket/types/services/BotEquipmentFilterService.d.ts +++ b/TypeScript/24WebSocket/types/services/BotEquipmentFilterService.d.ts @@ -1,10 +1,10 @@ -import { BotHelper } from "@spt-aki/helpers/BotHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { EquipmentChances, Generation, GenerationData, IBotType, ModsChances } from "@spt-aki/models/eft/common/tables/IBotType"; -import { BotGenerationDetails } from "@spt-aki/models/spt/bots/BotGenerationDetails"; -import { EquipmentFilterDetails, EquipmentFilters, IAdjustmentDetails, IBotConfig, WeightingAdjustmentDetails } from "@spt-aki/models/spt/config/IBotConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; +import { BotHelper } from "@spt/helpers/BotHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { EquipmentChances, Generation, GenerationData, IBotType, ModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; +import { EquipmentFilterDetails, EquipmentFilters, IAdjustmentDetails, IBotConfig, WeightingAdjustmentDetails } from "@spt/models/spt/config/IBotConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; export declare class BotEquipmentFilterService { protected logger: ILogger; protected botHelper: BotHelper; @@ -44,35 +44,35 @@ export declare class BotEquipmentFilterService { * @param botEquipmentRole equipment role of bot to look up * @returns Dictionary of weapon type and their whitelisted scope types */ - getBotWeaponSightWhitelist(botEquipmentRole: string): Record; + getBotWeaponSightWhitelist(botEquipmentRole: string): Record | undefined; /** * Get an object that contains equipment and cartridge blacklists for a specified bot type * @param botRole Role of the bot we want the blacklist for * @param playerLevel Level of the player * @returns EquipmentBlacklistDetails object */ - getBotEquipmentBlacklist(botRole: string, playerLevel: number): EquipmentFilterDetails; + getBotEquipmentBlacklist(botRole: string, playerLevel: number): EquipmentFilterDetails | undefined; /** * Get the whitelist for a specific bot type that's within the players level * @param botRole Bot type * @param playerLevel Players level * @returns EquipmentFilterDetails object */ - protected getBotEquipmentWhitelist(botRole: string, playerLevel: number): EquipmentFilterDetails; + protected getBotEquipmentWhitelist(botRole: string, playerLevel: number): EquipmentFilterDetails | undefined; /** * Retrieve item weighting adjustments from bot.json config based on bot level * @param botRole Bot type to get adjustments for * @param botLevel Level of bot * @returns Weighting adjustments for bot items */ - protected getBotWeightingAdjustments(botRole: string, botLevel: number): WeightingAdjustmentDetails; + protected getBotWeightingAdjustments(botRole: string, botLevel: number): WeightingAdjustmentDetails | undefined; /** * Retrieve item weighting adjustments from bot.json config based on player level * @param botRole Bot type to get adjustments for * @param playerlevel Level of bot * @returns Weighting adjustments for bot items */ - protected getBotWeightingAdjustmentsByPlayerLevel(botRole: string, playerlevel: number): WeightingAdjustmentDetails; + protected getBotWeightingAdjustmentsByPlayerLevel(botRole: string, playerlevel: number): WeightingAdjustmentDetails | undefined; /** * Filter bot equipment based on blacklist and whitelist from config/bot.json * Prioritizes whitelist first, if one is found blacklist is ignored diff --git a/TypeScript/24WebSocket/types/services/BotEquipmentModPoolService.d.ts b/TypeScript/24WebSocket/types/services/BotEquipmentModPoolService.d.ts index 8cca127..7b2b442 100644 --- a/TypeScript/24WebSocket/types/services/BotEquipmentModPoolService.d.ts +++ b/TypeScript/24WebSocket/types/services/BotEquipmentModPoolService.d.ts @@ -1,18 +1,18 @@ -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { Mods } from "@spt-aki/models/eft/common/tables/IBotType"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { IBotConfig } from "@spt-aki/models/spt/config/IBotConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { VFS } from "@spt-aki/utils/VFS"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { Mods } from "@spt/models/eft/common/tables/IBotType"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { VFS } from "@spt/utils/VFS"; /** Store a mapping between weapons, their slots and the items that fit those slots */ export declare class BotEquipmentModPoolService { protected logger: ILogger; protected vfs: VFS; protected itemHelper: ItemHelper; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected localisationService: LocalisationService; protected configServer: ConfigServer; protected botConfig: IBotConfig; @@ -20,7 +20,7 @@ export declare class BotEquipmentModPoolService { protected gearModPool: Mods; protected weaponPoolGenerated: boolean; protected armorPoolGenerated: boolean; - constructor(logger: ILogger, vfs: VFS, itemHelper: ItemHelper, databaseServer: DatabaseServer, localisationService: LocalisationService, configServer: ConfigServer); + constructor(logger: ILogger, vfs: VFS, itemHelper: ItemHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer); /** * Store dictionary of mods for each item passed in * @param items items to find related mods and store in modPool diff --git a/TypeScript/24WebSocket/types/services/BotGenerationCacheService.d.ts b/TypeScript/24WebSocket/types/services/BotGenerationCacheService.d.ts index 4c2ce9c..ba27266 100644 --- a/TypeScript/24WebSocket/types/services/BotGenerationCacheService.d.ts +++ b/TypeScript/24WebSocket/types/services/BotGenerationCacheService.d.ts @@ -1,8 +1,8 @@ -import { BotHelper } from "@spt-aki/helpers/BotHelper"; -import { IBotBase } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { BotHelper } from "@spt/helpers/BotHelper"; +import { IBotBase } from "@spt/models/eft/common/tables/IBotBase"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class BotGenerationCacheService { protected logger: ILogger; protected randomUtil: RandomUtil; diff --git a/TypeScript/24WebSocket/types/services/BotLootCacheService.d.ts b/TypeScript/24WebSocket/types/services/BotLootCacheService.d.ts index 7b56a12..2b51c5b 100644 --- a/TypeScript/24WebSocket/types/services/BotLootCacheService.d.ts +++ b/TypeScript/24WebSocket/types/services/BotLootCacheService.d.ts @@ -1,13 +1,13 @@ -import { PMCLootGenerator } from "@spt-aki/generators/PMCLootGenerator"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { IBotType } from "@spt-aki/models/eft/common/tables/IBotType"; -import { ITemplateItem, Props } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { IBotLootCache, LootCacheType } from "@spt-aki/models/spt/bots/IBotLootCache"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { RagfairPriceService } from "@spt-aki/services/RagfairPriceService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; +import { PMCLootGenerator } from "@spt/generators/PMCLootGenerator"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { IBotType } from "@spt/models/eft/common/tables/IBotType"; +import { ITemplateItem, Props } from "@spt/models/eft/common/tables/ITemplateItem"; +import { IBotLootCache, LootCacheType } from "@spt/models/spt/bots/IBotLootCache"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { RagfairPriceService } from "@spt/services/RagfairPriceService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class BotLootCacheService { protected logger: ILogger; protected itemHelper: ItemHelper; @@ -79,7 +79,7 @@ export declare class BotLootCacheService { */ protected botRoleExistsInCache(botRole: string): boolean; /** - * If lootcache is null, init with empty property arrays + * If lootcache is undefined, init with empty property arrays * @param botRole Bot role to hydrate */ protected initCacheForBotRole(botRole: string): void; diff --git a/TypeScript/24WebSocket/types/services/BotWeaponModLimitService.d.ts b/TypeScript/24WebSocket/types/services/BotWeaponModLimitService.d.ts index cf530a9..63c4967 100644 --- a/TypeScript/24WebSocket/types/services/BotWeaponModLimitService.d.ts +++ b/TypeScript/24WebSocket/types/services/BotWeaponModLimitService.d.ts @@ -1,9 +1,9 @@ -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { IBotConfig } from "@spt-aki/models/spt/config/IBotConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; export declare class BotModLimits { scope: ItemCount; scopeMax: number; diff --git a/TypeScript/24WebSocket/types/services/CustomLocationWaveService.d.ts b/TypeScript/24WebSocket/types/services/CustomLocationWaveService.d.ts index 8232364..c72d5bb 100644 --- a/TypeScript/24WebSocket/types/services/CustomLocationWaveService.d.ts +++ b/TypeScript/24WebSocket/types/services/CustomLocationWaveService.d.ts @@ -1,16 +1,16 @@ -import { BossLocationSpawn, Wave } from "@spt-aki/models/eft/common/ILocationBase"; -import { ILocationConfig } from "@spt-aki/models/spt/config/ILocationConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class CustomLocationWaveService { protected logger: ILogger; protected randomUtil: RandomUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected configServer: ConfigServer; protected locationConfig: ILocationConfig; - constructor(logger: ILogger, randomUtil: RandomUtil, databaseServer: DatabaseServer, configServer: ConfigServer); + constructor(logger: ILogger, randomUtil: RandomUtil, databaseService: DatabaseService, configServer: ConfigServer); /** * Add a boss wave to a map * @param locationId e.g. factory4_day, bigmap diff --git a/TypeScript/24WebSocket/types/services/DatabaseService.d.ts b/TypeScript/24WebSocket/types/services/DatabaseService.d.ts new file mode 100644 index 0000000..711a069 --- /dev/null +++ b/TypeScript/24WebSocket/types/services/DatabaseService.d.ts @@ -0,0 +1,113 @@ +import { IGlobals } from "@spt/models/eft/common/IGlobals"; +import { ILocation } from "@spt/models/eft/common/ILocation"; +import { IAchievement } from "@spt/models/eft/common/tables/IAchievement"; +import { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomizationItem"; +import { IHandbookBase } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IMatch } from "@spt/models/eft/common/tables/IMatch"; +import { IProfileTemplates } from "@spt/models/eft/common/tables/IProfileTemplate"; +import { IQuest } from "@spt/models/eft/common/tables/IQuest"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { ITrader } from "@spt/models/eft/common/tables/ITrader"; +import { IBots } from "@spt/models/spt/bots/IBots"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { IHideout } from "@spt/models/spt/hideout/IHideout"; +import { IDatabaseTables } from "@spt/models/spt/server/IDatabaseTables"; +import { ILocaleBase } from "@spt/models/spt/server/ILocaleBase"; +import { ILocations } from "@spt/models/spt/server/ILocations"; +import { IServerBase } from "@spt/models/spt/server/IServerBase"; +import { ISettingsBase } from "@spt/models/spt/server/ISettingsBase"; +import { ITemplates } from "@spt/models/spt/templates/ITemplates"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; +export declare class DatabaseService { + protected logger: ILogger; + protected databaseServer: DatabaseServer; + protected localisationService: LocalisationService; + protected locationConfig: ILocationConfig; + constructor(logger: ILogger, databaseServer: DatabaseServer, localisationService: LocalisationService); + /** + * @returns assets/database/ + */ + getTables(): IDatabaseTables; + /** + * @returns assets/database/bots/ + */ + getBots(): IBots; + /** + * @returns assets/database/globals.json + */ + getGlobals(): IGlobals; + /** + * @returns assets/database/hideout/ + */ + getHideout(): IHideout; + /** + * @returns assets/database/locales/ + */ + getLocales(): ILocaleBase; + /** + * @returns assets/database/locations + */ + getLocations(): ILocations; + /** + * Get specific location by its Id + * @param locationId Desired location id + * @returns assets/database/locations/ + */ + getLocation(locationId: string): ILocation; + /** + * @returns assets/database/match/ + */ + getMatch(): IMatch; + /** + * @returns assets/database/server.json + */ + getServer(): IServerBase; + /** + * @returns assets/database/settings.json + */ + getSettings(): ISettingsBase; + /** + * @returns assets/database/templates/ + */ + getTemplates(): ITemplates; + /** + * @returns assets/database/templates/achievements.json + */ + getAchievements(): IAchievement[]; + /** + * @returns assets/database/templates/customisation.json + */ + getCustomization(): Record; + /** + * @returns assets/database/templates/items.json + */ + getHandbook(): IHandbookBase; + /** + * @returns assets/database/templates/items.json + */ + getItems(): Record; + /** + * @returns assets/database/templates/prices.json + */ + getPrices(): Record; + /** + * @returns assets/database/templates/profiles.json + */ + getProfiles(): IProfileTemplates; + /** + * @returns assets/database/templates/items.json + */ + getQuests(): Record; + /** + * @returns assets/database/traders/ + */ + getTraders(): Record; + /** + * Get specific trader by their Id + * @param traderId Desired trader id + * @returns assets/database/traders/ + */ + getTrader(traderId: string): ITrader; +} diff --git a/TypeScript/24WebSocket/types/services/FenceService.d.ts b/TypeScript/24WebSocket/types/services/FenceService.d.ts index b0fa697..c156122 100644 --- a/TypeScript/24WebSocket/types/services/FenceService.d.ts +++ b/TypeScript/24WebSocket/types/services/FenceService.d.ts @@ -1,21 +1,21 @@ -import { HandbookHelper } from "@spt-aki/helpers/HandbookHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PresetHelper } from "@spt-aki/helpers/PresetHelper"; -import { IFenceLevel } from "@spt-aki/models/eft/common/IGlobals"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Item, Repairable } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { IBarterScheme, ITraderAssort } from "@spt-aki/models/eft/common/tables/ITrader"; -import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt-aki/models/spt/config/ITraderConfig"; -import { ICreateFenceAssortsResult } from "@spt-aki/models/spt/fence/ICreateFenceAssortsResult"; -import { IFenceAssortGenerationValues, IGenerationAssortValues } from "@spt-aki/models/spt/fence/IFenceAssortGenerationValues"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { HandbookHelper } from "@spt/helpers/HandbookHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { IFenceLevel } from "@spt/models/eft/common/IGlobals"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Item, Repairable } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem, Slot } from "@spt/models/eft/common/tables/ITemplateItem"; +import { IBarterScheme, ITraderAssort } from "@spt/models/eft/common/tables/ITrader"; +import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; +import { ICreateFenceAssortsResult } from "@spt/models/spt/fence/ICreateFenceAssortsResult"; +import { IFenceAssortGenerationValues, IGenerationAssortValues } from "@spt/models/spt/fence/IFenceAssortGenerationValues"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; /** * Handle actions surrounding Fence * e.g. generating or refreshing assorts / get next refresh time @@ -24,7 +24,7 @@ export declare class FenceService { protected logger: ILogger; protected timeUtil: TimeUtil; protected randomUtil: RandomUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected handbookHelper: HandbookHelper; protected itemHelper: ItemHelper; protected presetHelper: PresetHelper; @@ -35,13 +35,13 @@ export declare class FenceService { /** Time when some items in assort will be replaced */ protected nextPartialRefreshTimestamp: number; /** Main assorts you see at all rep levels */ - protected fenceAssort: ITraderAssort; + protected fenceAssort?: ITraderAssort; /** Assorts shown on a separate tab when you max out fence rep */ - protected fenceDiscountAssort: ITraderAssort; + protected fenceDiscountAssort?: ITraderAssort; /** Desired baseline counts - Hydrated on initial assort generation as part of generateFenceAssorts() */ protected desiredAssortCounts: IFenceAssortGenerationValues; protected fenceItemUpdCompareProperties: Set; - constructor(logger: ILogger, timeUtil: TimeUtil, randomUtil: RandomUtil, databaseServer: DatabaseServer, handbookHelper: HandbookHelper, itemHelper: ItemHelper, presetHelper: PresetHelper, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + constructor(logger: ILogger, timeUtil: TimeUtil, randomUtil: RandomUtil, databaseService: DatabaseService, handbookHelper: HandbookHelper, itemHelper: ItemHelper, presetHelper: PresetHelper, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); /** * Replace main fence assort with new assort * @param assort New assorts to replace old with @@ -56,12 +56,12 @@ export declare class FenceService { * Get main fence assort * @return ITraderAssort */ - getMainFenceAssort(): ITraderAssort; + getMainFenceAssort(): ITraderAssort | undefined; /** * Get discount fence assort * @return ITraderAssort */ - getDiscountFenceAssort(): ITraderAssort; + getDiscountFenceAssort(): ITraderAssort | undefined; /** * Replace high rep level fence assort with new assort * @param discountAssort New assorts to replace old with @@ -217,7 +217,7 @@ export declare class FenceService { * @param itemsWithChildren Items to search through * @returns Matching assort item */ - protected getMatchingItem(rootItemBeingAdded: Item, itemDbDetails: ITemplateItem, itemsWithChildren: Item[][]): Item; + protected getMatchingItem(rootItemBeingAdded: Item, itemDbDetails: ITemplateItem, itemsWithChildren: Item[][]): Item | undefined; /** * Should this item be forced into only 1 stack on fence * @param existingItem Existing item from fence assort @@ -239,7 +239,7 @@ export declare class FenceService { }>, itemTpl: string): { current: number; max: number; - }; + } | undefined; /** * Find presets in base fence assort and add desired number to 'assorts' parameter * @param desiredWeaponPresetsCount @@ -254,6 +254,19 @@ export declare class FenceService { * @param itemDbDetails Armor items db template */ protected randomiseArmorModDurability(armor: Item[], itemDbDetails: ITemplateItem): void; + /** + * Randomise the durability values of items on armor with a passed in slot + * @param softInsertSlots Slots of items to randomise + * @param armorItemAndMods Array of armor + inserts to get items from + */ + protected randomiseArmorSoftInsertDurabilities(softInsertSlots: Slot[], armorItemAndMods: Item[]): void; + /** + * Randomise the durability values of plate items in armor + * Has chance to remove plate + * @param plateSlots Slots of items to randomise + * @param armorItemAndMods Array of armor + inserts to get items from + */ + protected randomiseArmorInsertsDurabilities(plateSlots: Slot[], armorItemAndMods: Item[]): void; /** * Get stack size of a singular item (no mods) * @param itemDbDetails item being added to fence diff --git a/TypeScript/24WebSocket/types/services/GiftService.d.ts b/TypeScript/24WebSocket/types/services/GiftService.d.ts index 2dbf09a..261b475 100644 --- a/TypeScript/24WebSocket/types/services/GiftService.d.ts +++ b/TypeScript/24WebSocket/types/services/GiftService.d.ts @@ -1,27 +1,40 @@ -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { GiftSentResult } from "@spt-aki/models/enums/GiftSentResult"; -import { MessageType } from "@spt-aki/models/enums/MessageType"; -import { Gift, IGiftsConfig } from "@spt-aki/models/spt/config/IGiftsConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { MailSendService } from "@spt-aki/services/MailSendService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { GiftSentResult } from "@spt/models/enums/GiftSentResult"; +import { MessageType } from "@spt/models/enums/MessageType"; +import { Gift, IGiftsConfig } from "@spt/models/spt/config/IGiftsConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { MailSendService } from "@spt/services/MailSendService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class GiftService { protected logger: ILogger; protected mailSendService: MailSendService; + protected localisationService: LocalisationService; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected profileHelper: ProfileHelper; protected configServer: ConfigServer; protected giftConfig: IGiftsConfig; - constructor(logger: ILogger, mailSendService: MailSendService, hashUtil: HashUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, configServer: ConfigServer); + constructor(logger: ILogger, mailSendService: MailSendService, localisationService: LocalisationService, hashUtil: HashUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, configServer: ConfigServer); /** * Does a gift with a specific ID exist in db * @param giftId Gift id to check for * @returns True if it exists in db */ giftExists(giftId: string): boolean; + getGiftById(giftId: string): Gift; + /** + * Get dictionary of all gifts + * @returns Dict keyed by gift id + */ + getGifts(): Record; + /** + * Get an array of all gift ids + * @returns string array of gift ids + */ + getGiftIds(): string[]; /** * Send player a gift from a range of sources * @param playerId Player to send gift to / sessionId @@ -34,13 +47,13 @@ export declare class GiftService { * @param giftData Gift to send player * @returns trader/user/system id */ - protected getSenderId(giftData: Gift): string; + protected getSenderId(giftData: Gift): string | undefined; /** * Convert GiftSenderType into a dialog MessageType * @param giftData Gift to send player * @returns MessageType enum value */ - protected getMessageType(giftData: Gift): MessageType; + protected getMessageType(giftData: Gift): MessageType | undefined; /** * Prapor sends gifts to player for first week after profile creation * @param sessionId Player id diff --git a/TypeScript/24WebSocket/types/services/InsuranceService.d.ts b/TypeScript/24WebSocket/types/services/InsuranceService.d.ts index b024e4d..0000e66 100644 --- a/TypeScript/24WebSocket/types/services/InsuranceService.d.ts +++ b/TypeScript/24WebSocket/types/services/InsuranceService.d.ts @@ -1,30 +1,30 @@ -import { DialogueHelper } from "@spt-aki/helpers/DialogueHelper"; -import { HandbookHelper } from "@spt-aki/helpers/HandbookHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { SecureContainerHelper } from "@spt-aki/helpers/SecureContainerHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITraderBase } from "@spt-aki/models/eft/common/tables/ITrader"; -import { IInsuredItemsData } from "@spt-aki/models/eft/inRaid/IInsuredItemsData"; -import { ISaveProgressRequestData } from "@spt-aki/models/eft/inRaid/ISaveProgressRequestData"; -import { IInsuranceConfig } from "@spt-aki/models/spt/config/IInsuranceConfig"; -import { ILostOnDeathConfig } from "@spt-aki/models/spt/config/ILostOnDeathConfig"; -import { IInsuranceEquipmentPkg } from "@spt-aki/models/spt/services/IInsuranceEquipmentPkg"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { LocaleService } from "@spt-aki/services/LocaleService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { MailSendService } from "@spt-aki/services/MailSendService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { DialogueHelper } from "@spt/helpers/DialogueHelper"; +import { HandbookHelper } from "@spt/helpers/HandbookHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { SecureContainerHelper } from "@spt/helpers/SecureContainerHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITraderBase } from "@spt/models/eft/common/tables/ITrader"; +import { IInsuredItemsData } from "@spt/models/eft/inRaid/IInsuredItemsData"; +import { ISaveProgressRequestData } from "@spt/models/eft/inRaid/ISaveProgressRequestData"; +import { IInsuranceConfig } from "@spt/models/spt/config/IInsuranceConfig"; +import { ILostOnDeathConfig } from "@spt/models/spt/config/ILostOnDeathConfig"; +import { IInsuranceEquipmentPkg } from "@spt/models/spt/services/IInsuranceEquipmentPkg"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocaleService } from "@spt/services/LocaleService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { MailSendService } from "@spt/services/MailSendService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class InsuranceService { protected logger: ILogger; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected secureContainerHelper: SecureContainerHelper; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; @@ -42,7 +42,7 @@ export declare class InsuranceService { protected insured: Record>; protected insuranceConfig: IInsuranceConfig; protected lostOnDeathConfig: ILostOnDeathConfig; - constructor(logger: ILogger, databaseServer: DatabaseServer, secureContainerHelper: SecureContainerHelper, randomUtil: RandomUtil, itemHelper: ItemHelper, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, traderHelper: TraderHelper, dialogueHelper: DialogueHelper, handbookHelper: HandbookHelper, localisationService: LocalisationService, localeService: LocaleService, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); + constructor(logger: ILogger, databaseService: DatabaseService, secureContainerHelper: SecureContainerHelper, randomUtil: RandomUtil, itemHelper: ItemHelper, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, traderHelper: TraderHelper, dialogueHelper: DialogueHelper, handbookHelper: HandbookHelper, localisationService: LocalisationService, localeService: LocaleService, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); /** * Does player have insurance array * @param sessionId Player id @@ -163,11 +163,11 @@ export declare class InsuranceService { * @param traderId Trader item is insured with * @returns price in roubles */ - getPremium(pmcData: IPmcData, inventoryItem: Item, traderId: string): number; + getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: Item, traderId: string): number; /** * Returns the ID that should be used for a root-level Item's parentId property value within in the context of insurance. - * - * @returns The ID. + * @param sessionID Players id + * @returns The root item Id. */ getRootItemParentID(sessionID: string): string; } diff --git a/TypeScript/24WebSocket/types/services/ItemBaseClassService.d.ts b/TypeScript/24WebSocket/types/services/ItemBaseClassService.d.ts index 8a5b5c5..a7d986b 100644 --- a/TypeScript/24WebSocket/types/services/ItemBaseClassService.d.ts +++ b/TypeScript/24WebSocket/types/services/ItemBaseClassService.d.ts @@ -1,18 +1,18 @@ -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; /** * Cache the baseids for each item in the tiems db inside a dictionary */ export declare class ItemBaseClassService { protected logger: ILogger; protected localisationService: LocalisationService; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected itemBaseClassesCache: Record; protected items: Record; protected cacheGenerated: boolean; - constructor(logger: ILogger, localisationService: LocalisationService, databaseServer: DatabaseServer); + constructor(logger: ILogger, localisationService: LocalisationService, databaseService: DatabaseService); /** * Create cache and store inside ItemBaseClassService * Store a dict of an items tpl to the base classes it and its parents have diff --git a/TypeScript/24WebSocket/types/services/ItemFilterService.d.ts b/TypeScript/24WebSocket/types/services/ItemFilterService.d.ts index dea17d7..7ff6532 100644 --- a/TypeScript/24WebSocket/types/services/ItemFilterService.d.ts +++ b/TypeScript/24WebSocket/types/services/ItemFilterService.d.ts @@ -1,20 +1,30 @@ -import { IItemConfig } from "@spt-aki/models/spt/config/IItemConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; +import { IItemConfig } from "@spt/models/spt/config/IItemConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { ICloner } from "@spt/utils/cloners/ICloner"; /** Centralise the handling of blacklisting items, uses blacklist found in config/item.json, stores items that should not be used by players / broken items */ export declare class ItemFilterService { protected logger: ILogger; + protected cloner: ICloner; protected databaseServer: DatabaseServer; protected configServer: ConfigServer; protected itemConfig: IItemConfig; - constructor(logger: ILogger, databaseServer: DatabaseServer, configServer: ConfigServer); + protected itemBlacklistCache: Set; + protected lootableItemBlacklistCache: Set; + constructor(logger: ILogger, cloner: ICloner, databaseServer: DatabaseServer, configServer: ConfigServer); /** - * Check if the provided template id is blacklisted in config/item.json + * Check if the provided template id is blacklisted in config/item.json/blacklist * @param tpl template id * @returns true if blacklisted */ isItemBlacklisted(tpl: string): boolean; + /** + * Check if the provided template id is blacklisted in config/item.json/lootableItemBlacklist + * @param tpl template id + * @returns true if blacklisted + */ + isLootableItemBlacklisted(tpl: string): boolean; /** * Check if item is blacklisted from being a reward for player * @param tpl item tpl to check is on blacklist @@ -31,6 +41,11 @@ export declare class ItemFilterService { * @returns string array of blacklisted tempalte ids */ getBlacklistedItems(): string[]; + /** + * Return every template id blacklisted in config/item.json/lootableItemBlacklist + * @returns string array of blacklisted tempalte ids + */ + getBlacklistedLootableItems(): string[]; /** * Check if the provided template id is boss item in config/item.json * @param tpl template id diff --git a/TypeScript/24WebSocket/types/services/LocaleService.d.ts b/TypeScript/24WebSocket/types/services/LocaleService.d.ts index d51859d..2326dcc 100644 --- a/TypeScript/24WebSocket/types/services/LocaleService.d.ts +++ b/TypeScript/24WebSocket/types/services/LocaleService.d.ts @@ -1,7 +1,7 @@ -import { ILocaleConfig } from "@spt-aki/models/spt/config/ILocaleConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; +import { ILocaleConfig } from "@spt/models/spt/config/ILocaleConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; /** * Handles getting locales from config or users machine */ diff --git a/TypeScript/24WebSocket/types/services/LocalisationService.d.ts b/TypeScript/24WebSocket/types/services/LocalisationService.d.ts index c12e465..42dfa4e 100644 --- a/TypeScript/24WebSocket/types/services/LocalisationService.d.ts +++ b/TypeScript/24WebSocket/types/services/LocalisationService.d.ts @@ -1,8 +1,8 @@ import { I18n } from "i18n"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocaleService } from "@spt-aki/services/LocaleService"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { LocaleService } from "@spt/services/LocaleService"; +import { RandomUtil } from "@spt/utils/RandomUtil"; /** * Handles translating server text into different langauges */ diff --git a/TypeScript/24WebSocket/types/services/MailSendService.d.ts b/TypeScript/24WebSocket/types/services/MailSendService.d.ts index e5643f9..8f1f974 100644 --- a/TypeScript/24WebSocket/types/services/MailSendService.d.ts +++ b/TypeScript/24WebSocket/types/services/MailSendService.d.ts @@ -1,25 +1,25 @@ -import { DialogueHelper } from "@spt-aki/helpers/DialogueHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { NotificationSendHelper } from "@spt-aki/helpers/NotificationSendHelper"; -import { NotifierHelper } from "@spt-aki/helpers/NotifierHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { Dialogue, IUserDialogInfo, Message, MessageItems } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { MessageType } from "@spt-aki/models/enums/MessageType"; -import { Traders } from "@spt-aki/models/enums/Traders"; -import { IProfileChangeEvent, ISendMessageDetails } from "@spt-aki/models/spt/dialog/ISendMessageDetails"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { DialogueHelper } from "@spt/helpers/DialogueHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { NotificationSendHelper } from "@spt/helpers/NotificationSendHelper"; +import { NotifierHelper } from "@spt/helpers/NotifierHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { Dialogue, ISystemData, IUserDialogInfo, Message, MessageContentRagfair, MessageItems } from "@spt/models/eft/profile/ISptProfile"; +import { MessageType } from "@spt/models/enums/MessageType"; +import { Traders } from "@spt/models/enums/Traders"; +import { IProfileChangeEvent, ISendMessageDetails } from "@spt/models/spt/dialog/ISendMessageDetails"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class MailSendService { protected logger: ILogger; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected saveServer: SaveServer; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected notifierHelper: NotifierHelper; protected dialogueHelper: DialogueHelper; protected notificationSendHelper: NotificationSendHelper; @@ -27,7 +27,7 @@ export declare class MailSendService { protected itemHelper: ItemHelper; protected traderHelper: TraderHelper; protected readonly systemSenderId = "59e7125688a45068a6249071"; - constructor(logger: ILogger, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, databaseServer: DatabaseServer, notifierHelper: NotifierHelper, dialogueHelper: DialogueHelper, notificationSendHelper: NotificationSendHelper, localisationService: LocalisationService, itemHelper: ItemHelper, traderHelper: TraderHelper); + constructor(logger: ILogger, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, databaseService: DatabaseService, notifierHelper: NotifierHelper, dialogueHelper: DialogueHelper, notificationSendHelper: NotificationSendHelper, localisationService: LocalisationService, itemHelper: ItemHelper, traderHelper: TraderHelper); /** * 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 * @param sessionId The session ID to send the message to @@ -37,7 +37,7 @@ export declare class MailSendService { * @param items Optional items to send to player * @param maxStorageTimeSeconds Optional time to collect items before they expire */ - sendDirectNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, message: string, items?: Item[], maxStorageTimeSeconds?: any, systemData?: any, ragfair?: any): void; + sendDirectNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, message: string, items?: Item[], maxStorageTimeSeconds?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; /** * Send a message from an NPC (e.g. prapor) to the player with or without items * @param sessionId The session ID to send the message to @@ -47,7 +47,7 @@ export declare class MailSendService { * @param items Optional items to send to player * @param maxStorageTimeSeconds Optional time to collect items before they expire */ - sendLocalisedNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, messageLocaleId: string, items?: Item[], maxStorageTimeSeconds?: any, systemData?: any, ragfair?: any): void; + sendLocalisedNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, messageLocaleId: string, items?: Item[], maxStorageTimeSeconds?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; /** * Send a message from SYSTEM to the player with or without items * @param sessionId The session ID to send the message to @@ -72,7 +72,7 @@ export declare class MailSendService { * @param items Optional items to send to player * @param maxStorageTimeSeconds Optional time to collect items before they expire */ - sendUserMessageToPlayer(sessionId: string, senderDetails: IUserDialogInfo, message: string, items?: Item[], maxStorageTimeSeconds?: any): void; + sendUserMessageToPlayer(sessionId: string, senderDetails: IUserDialogInfo, message: string, items?: Item[], maxStorageTimeSeconds?: number): void; /** * 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 @@ -99,7 +99,7 @@ export declare class MailSendService { * @param itemsToSendToPlayer Items to add to message * @param maxStorageTimeSeconds total time items are stored in mail before being deleted */ - protected addRewardItemsToMessage(message: Message, itemsToSendToPlayer: MessageItems, maxStorageTimeSeconds: number): void; + protected addRewardItemsToMessage(message: Message, itemsToSendToPlayer: MessageItems | undefined, maxStorageTimeSeconds: number | undefined): void; /** * perform various sanitising actions on the items before they're considered ready for insertion into message * @param dialogType The type of the dialog that will hold the reward items being processed @@ -125,5 +125,5 @@ export declare class MailSendService { * @param messageDetails * @returns gets an id of the individual sending it */ - protected getMessageSenderIdByType(messageDetails: ISendMessageDetails): string; + protected getMessageSenderIdByType(messageDetails: ISendMessageDetails): string | undefined; } diff --git a/TypeScript/24WebSocket/types/services/MapMarkerService.d.ts b/TypeScript/24WebSocket/types/services/MapMarkerService.d.ts new file mode 100644 index 0000000..aed5430 --- /dev/null +++ b/TypeScript/24WebSocket/types/services/MapMarkerService.d.ts @@ -0,0 +1,37 @@ +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IInventoryCreateMarkerRequestData } from "@spt/models/eft/inventory/IInventoryCreateMarkerRequestData"; +import { IInventoryDeleteMarkerRequestData } from "@spt/models/eft/inventory/IInventoryDeleteMarkerRequestData"; +import { IInventoryEditMarkerRequestData } from "@spt/models/eft/inventory/IInventoryEditMarkerRequestData"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +export declare class MapMarkerService { + protected logger: ILogger; + constructor(logger: ILogger); + /** + * Add note to a map item in player inventory + * @param pmcData Player profile + * @param request Add marker request + * @returns Item + */ + createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): Item; + /** + * Delete a map marker + * @param pmcData Player profile + * @param request Delete marker request + * @returns Item + */ + deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): Item; + /** + * Edit an existing map marker + * @param pmcData Player profile + * @param request Edit marker request + * @returns Item + */ + editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): Item; + /** + * Strip out characters from note string that are not: letter/numbers/unicode/spaces + * @param mapNoteText Marker text to sanitise + * @returns Sanitised map marker text + */ + protected sanitiseMapMarkerText(mapNoteText: string): string; +} diff --git a/TypeScript/24WebSocket/types/services/MatchBotDetailsCacheService.d.ts b/TypeScript/24WebSocket/types/services/MatchBotDetailsCacheService.d.ts index 6521719..e899577 100644 --- a/TypeScript/24WebSocket/types/services/MatchBotDetailsCacheService.d.ts +++ b/TypeScript/24WebSocket/types/services/MatchBotDetailsCacheService.d.ts @@ -1,6 +1,6 @@ -import { IBotBase } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; +import { IBotBase } from "@spt/models/eft/common/tables/IBotBase"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { LocalisationService } from "@spt/services/LocalisationService"; /** Cache bots in a dictionary, keyed by the bots name, keying by name isnt ideal as its not unique but this is used by the post-raid system which doesnt have any bot ids, only name */ export declare class MatchBotDetailsCacheService { protected logger: ILogger; diff --git a/TypeScript/24WebSocket/types/services/MatchLocationService.d.ts b/TypeScript/24WebSocket/types/services/MatchLocationService.d.ts index 43a66be..dafa99a 100644 --- a/TypeScript/24WebSocket/types/services/MatchLocationService.d.ts +++ b/TypeScript/24WebSocket/types/services/MatchLocationService.d.ts @@ -1,5 +1,5 @@ -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class MatchLocationService { protected timeUtil: TimeUtil; protected saveServer: SaveServer; diff --git a/TypeScript/24WebSocket/types/services/ModCompilerService.d.ts b/TypeScript/24WebSocket/types/services/ModCompilerService.d.ts index 51508ac..eb4298c 100644 --- a/TypeScript/24WebSocket/types/services/ModCompilerService.d.ts +++ b/TypeScript/24WebSocket/types/services/ModCompilerService.d.ts @@ -1,7 +1,7 @@ -import ts from "typescript"; -import type { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ModHashCacheService } from "@spt-aki/services/cache/ModHashCacheService"; -import { VFS } from "@spt-aki/utils/VFS"; +import { CompilerOptions } from "typescript"; +import type { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ModHashCacheService } from "@spt/services/cache/ModHashCacheService"; +import { VFS } from "@spt/utils/VFS"; export declare class ModCompilerService { protected logger: ILogger; protected modHashCacheService: ModHashCacheService; @@ -21,7 +21,7 @@ export declare class ModCompilerService { * @param fileNames Paths to TS files * @param options Compiler options */ - protected compile(fileNames: string[], options: ts.CompilerOptions): Promise; + protected compile(fileNames: string[], options: CompilerOptions): Promise; /** * Do the files at the provided paths exist * @param fileNames diff --git a/TypeScript/24WebSocket/types/services/NotificationService.d.ts b/TypeScript/24WebSocket/types/services/NotificationService.d.ts index 81cc13d..69d895a 100644 --- a/TypeScript/24WebSocket/types/services/NotificationService.d.ts +++ b/TypeScript/24WebSocket/types/services/NotificationService.d.ts @@ -1,4 +1,4 @@ -import { IWsNotificationEvent } from "@spt-aki/models/eft/ws/IWsNotificationEvent"; +import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; export declare class NotificationService { protected messageQueue: Record; getMessageQueue(): Record; diff --git a/TypeScript/24WebSocket/types/services/OpenZoneService.d.ts b/TypeScript/24WebSocket/types/services/OpenZoneService.d.ts index d423a14..c7dd0bd 100644 --- a/TypeScript/24WebSocket/types/services/OpenZoneService.d.ts +++ b/TypeScript/24WebSocket/types/services/OpenZoneService.d.ts @@ -1,18 +1,18 @@ -import { ILocationConfig } from "@spt-aki/models/spt/config/ILocationConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { RandomUtil } from "@spt/utils/RandomUtil"; /** Service for adding new zones to a maps OpenZones property */ export declare class OpenZoneService { protected logger: ILogger; protected randomUtil: RandomUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected localisationService: LocalisationService; protected configServer: ConfigServer; protected locationConfig: ILocationConfig; - constructor(logger: ILogger, randomUtil: RandomUtil, databaseServer: DatabaseServer, localisationService: LocalisationService, configServer: ConfigServer); + constructor(logger: ILogger, randomUtil: RandomUtil, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer); /** * Add open zone to specified map * @param locationId map location (e.g. factory4_day) diff --git a/TypeScript/24WebSocket/types/services/PaymentService.d.ts b/TypeScript/24WebSocket/types/services/PaymentService.d.ts index 0df23b4..61d5731 100644 --- a/TypeScript/24WebSocket/types/services/PaymentService.d.ts +++ b/TypeScript/24WebSocket/types/services/PaymentService.d.ts @@ -1,30 +1,30 @@ -import { HandbookHelper } from "@spt-aki/helpers/HandbookHelper"; -import { InventoryHelper } from "@spt-aki/helpers/InventoryHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { IProcessBuyTradeRequestData } from "@spt-aki/models/eft/trade/IProcessBuyTradeRequestData"; -import { IProcessSellTradeRequestData } from "@spt-aki/models/eft/trade/IProcessSellTradeRequestData"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { HandbookHelper } from "@spt/helpers/HandbookHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PaymentHelper } from "@spt/helpers/PaymentHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { IProcessBuyTradeRequestData } from "@spt/models/eft/trade/IProcessBuyTradeRequestData"; +import { IProcessSellTradeRequestData } from "@spt/models/eft/trade/IProcessSellTradeRequestData"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class PaymentService { protected logger: ILogger; protected hashUtil: HashUtil; protected httpResponse: HttpResponseUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected handbookHelper: HandbookHelper; protected traderHelper: TraderHelper; protected itemHelper: ItemHelper; protected inventoryHelper: InventoryHelper; protected localisationService: LocalisationService; protected paymentHelper: PaymentHelper; - constructor(logger: ILogger, hashUtil: HashUtil, httpResponse: HttpResponseUtil, databaseServer: DatabaseServer, handbookHelper: HandbookHelper, traderHelper: TraderHelper, itemHelper: ItemHelper, inventoryHelper: InventoryHelper, localisationService: LocalisationService, paymentHelper: PaymentHelper); + constructor(logger: ILogger, hashUtil: HashUtil, httpResponse: HttpResponseUtil, databaseService: DatabaseService, handbookHelper: HandbookHelper, traderHelper: TraderHelper, itemHelper: ItemHelper, inventoryHelper: InventoryHelper, localisationService: LocalisationService, paymentHelper: PaymentHelper); /** * Take money and insert items into return to server request * @param pmcData Pmc profile @@ -84,5 +84,5 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns true if its in inventory */ - protected isInStash(itemId: string, inventoryItems: Item[], playerStashId: string): boolean; + protected isInStash(itemId: string | undefined, inventoryItems: Item[], playerStashId: string): boolean; } diff --git a/TypeScript/24WebSocket/types/services/PlayerService.d.ts b/TypeScript/24WebSocket/types/services/PlayerService.d.ts index f24e0dc..84c4c6f 100644 --- a/TypeScript/24WebSocket/types/services/PlayerService.d.ts +++ b/TypeScript/24WebSocket/types/services/PlayerService.d.ts @@ -1,14 +1,14 @@ -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class PlayerService { protected logger: ILogger; protected timeUtil: TimeUtil; protected localisationService: LocalisationService; - protected databaseServer: DatabaseServer; - constructor(logger: ILogger, timeUtil: TimeUtil, localisationService: LocalisationService, databaseServer: DatabaseServer); + protected databaseService: DatabaseService; + constructor(logger: ILogger, timeUtil: TimeUtil, localisationService: LocalisationService, databaseService: DatabaseService); /** * Get level of player * @param pmcData Player profile diff --git a/TypeScript/24WebSocket/types/services/PmcChatResponseService.d.ts b/TypeScript/24WebSocket/types/services/PmcChatResponseService.d.ts index 1d38e2c..4a22f10 100644 --- a/TypeScript/24WebSocket/types/services/PmcChatResponseService.d.ts +++ b/TypeScript/24WebSocket/types/services/PmcChatResponseService.d.ts @@ -1,15 +1,17 @@ -import { NotificationSendHelper } from "@spt-aki/helpers/NotificationSendHelper"; -import { WeightedRandomHelper } from "@spt-aki/helpers/WeightedRandomHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Aggressor, Victim } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { IUserDialogInfo } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { IPmcChatResponse } from "@spt-aki/models/spt/config/IPmChatResponse"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { MatchBotDetailsCacheService } from "@spt-aki/services/MatchBotDetailsCacheService"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { NotificationSendHelper } from "@spt/helpers/NotificationSendHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Aggressor, Victim } from "@spt/models/eft/common/tables/IBotBase"; +import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; +import { IGiftsConfig } from "@spt/models/spt/config/IGiftsConfig"; +import { IPmcChatResponse } from "@spt/models/spt/config/IPmChatResponse"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { GiftService } from "@spt/services/GiftService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { MatchBotDetailsCacheService } from "@spt/services/MatchBotDetailsCacheService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class PmcChatResponseService { protected logger: ILogger; protected hashUtil: HashUtil; @@ -17,10 +19,12 @@ export declare class PmcChatResponseService { protected notificationSendHelper: NotificationSendHelper; protected matchBotDetailsCacheService: MatchBotDetailsCacheService; protected localisationService: LocalisationService; + protected giftService: GiftService; protected weightedRandomHelper: WeightedRandomHelper; protected configServer: ConfigServer; protected pmcResponsesConfig: IPmcChatResponse; - constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, notificationSendHelper: NotificationSendHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, localisationService: LocalisationService, weightedRandomHelper: WeightedRandomHelper, configServer: ConfigServer); + protected giftConfig: IGiftsConfig; + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, notificationSendHelper: NotificationSendHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, localisationService: LocalisationService, giftService: GiftService, weightedRandomHelper: WeightedRandomHelper, configServer: ConfigServer); /** * For each PMC victim of the player, have a chance to send a message to the player, can be positive or negative * @param sessionId Session id @@ -41,7 +45,7 @@ export declare class PmcChatResponseService { * @param pmcData Player profile * @returns Message from PMC to player */ - protected chooseMessage(isVictim: boolean, pmcData: IPmcData): string; + protected chooseMessage(isVictim: boolean, pmcData: IPmcData): string | undefined; /** * Should capitalisation be stripped from the message response before sending * @param isVictim Was responder a victim of player diff --git a/TypeScript/24WebSocket/types/services/ProfileFixerService.d.ts b/TypeScript/24WebSocket/types/services/ProfileFixerService.d.ts index 26425ae..525b867 100644 --- a/TypeScript/24WebSocket/types/services/ProfileFixerService.d.ts +++ b/TypeScript/24WebSocket/types/services/ProfileFixerService.d.ts @@ -1,29 +1,30 @@ -import { HideoutHelper } from "@spt-aki/helpers/HideoutHelper"; -import { InventoryHelper } from "@spt-aki/helpers/InventoryHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Bonus, HideoutSlot } from "@spt-aki/models/eft/common/tables/IBotBase"; -import { IPmcDataRepeatableQuest, IRepeatableQuest } from "@spt-aki/models/eft/common/tables/IRepeatableQuests"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { StageBonus } from "@spt-aki/models/eft/hideout/IHideoutArea"; -import { IAkiProfile, IEquipmentBuild, IMagazineBuild, IWeaponBuild } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { HideoutAreas } from "@spt-aki/models/enums/HideoutAreas"; -import { ICoreConfig } from "@spt-aki/models/spt/config/ICoreConfig"; -import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; -import { Watermark } from "@spt-aki/utils/Watermark"; +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Bonus, HideoutSlot } from "@spt/models/eft/common/tables/IBotBase"; +import { IPmcDataRepeatableQuest, IRepeatableQuest } from "@spt/models/eft/common/tables/IRepeatableQuests"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { StageBonus } from "@spt/models/eft/hideout/IHideoutArea"; +import { ISptProfile, IEquipmentBuild, IMagazineBuild, IWeaponBuild } from "@spt/models/eft/profile/ISptProfile"; +import { HideoutAreas } from "@spt/models/enums/HideoutAreas"; +import { ICoreConfig } from "@spt/models/spt/config/ICoreConfig"; +import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { JsonUtil } from "@spt/utils/JsonUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { Watermark } from "@spt/utils/Watermark"; export declare class ProfileFixerService { protected logger: ILogger; protected watermark: Watermark; + protected databaseService: DatabaseService; protected hideoutHelper: HideoutHelper; protected inventoryHelper: InventoryHelper; protected traderHelper: TraderHelper; @@ -33,12 +34,11 @@ export declare class ProfileFixerService { protected timeUtil: TimeUtil; protected jsonUtil: JsonUtil; protected hashUtil: HashUtil; - protected databaseServer: DatabaseServer; protected configServer: ConfigServer; protected cloner: ICloner; protected coreConfig: ICoreConfig; protected ragfairConfig: IRagfairConfig; - constructor(logger: ILogger, watermark: Watermark, hideoutHelper: HideoutHelper, inventoryHelper: InventoryHelper, traderHelper: TraderHelper, profileHelper: ProfileHelper, itemHelper: ItemHelper, localisationService: LocalisationService, timeUtil: TimeUtil, jsonUtil: JsonUtil, hashUtil: HashUtil, databaseServer: DatabaseServer, configServer: ConfigServer, cloner: ICloner); + constructor(logger: ILogger, watermark: Watermark, databaseService: DatabaseService, hideoutHelper: HideoutHelper, inventoryHelper: InventoryHelper, traderHelper: TraderHelper, profileHelper: ProfileHelper, itemHelper: ItemHelper, localisationService: LocalisationService, timeUtil: TimeUtil, jsonUtil: JsonUtil, hashUtil: HashUtil, configServer: ConfigServer, cloner: ICloner); /** * Find issues in the pmc profile data that may cause issues and fix them * @param pmcProfile profile to check and fix @@ -58,7 +58,7 @@ export declare class ProfileFixerService { * Add tag to profile to indicate when it was made * @param fullProfile */ - addMissingAkiVersionTagToProfile(fullProfile: IAkiProfile): void; + addMissingSptVersionTagToProfile(fullProfile: ISptProfile): void; /** * TODO - make this non-public - currently used by RepeatableQuestController * Remove unused condition counters @@ -115,13 +115,13 @@ export declare class ProfileFixerService { * @param bonus bonus to find * @returns matching bonus */ - protected getBonusFromProfile(profileBonuses: Bonus[], bonus: StageBonus): Bonus; + protected getBonusFromProfile(profileBonuses: Bonus[], bonus: StageBonus): Bonus | undefined; /** * Checks profile inventiory for items that do not exist inside the items db * @param sessionId Session id * @param pmcProfile Profile to check inventory of */ - checkForOrphanedModdedItems(sessionId: string, fullProfile: IAkiProfile): void; + checkForOrphanedModdedItems(sessionId: string, fullProfile: ISptProfile): void; /** * @param buildType The type of build, used for logging only * @param build The build to check for invalid items @@ -149,7 +149,7 @@ export declare class ProfileFixerService { * Iterate over associated profile template and check all hideout areas exist, add if not * @param fullProfile Profile to update */ - addMissingHideoutAreasToProfile(fullProfile: IAkiProfile): void; + addMissingHideoutAreasToProfile(fullProfile: ISptProfile): void; /** * These used to be used for storing scav case rewards, rewards are now generated on pickup * @param pmcProfile Profile to update @@ -160,12 +160,12 @@ export declare class ProfileFixerService { * We store the old AID value in new field `sessionId` * @param fullProfile Profile to update */ - fixIncorrectAidValue(fullProfile: IAkiProfile): void; + fixIncorrectAidValue(fullProfile: ISptProfile): void; /** * Bsg nested `stats` into a sub object called 'eft' * @param fullProfile Profile to check for and migrate stats data */ - migrateStatsToNewStructure(fullProfile: IAkiProfile): void; + migrateStatsToNewStructure(fullProfile: ISptProfile): void; /** * 26126 (7th August) requires bonuses to have an ID, these were not included in the default profile presets * @param pmcProfile Profile to add missing IDs to @@ -187,7 +187,7 @@ export declare class ProfileFixerService { protected removeOrphanedQuests(pmcProfile: IPmcData): void; /** * If someone has run a mod from pre-3.8.0, it results in an invalid `nextResupply` value - * Resolve this by setting the nextResupply to 0 if it's null + * Resolve this by setting the nextResupply to 0 if it's undefined */ protected fixNullTraderNextResupply(pmcProfile: IPmcData): void; } diff --git a/TypeScript/24WebSocket/types/services/ProfileSnapshotService.d.ts b/TypeScript/24WebSocket/types/services/ProfileSnapshotService.d.ts index 652bc92..4492dda 100644 --- a/TypeScript/24WebSocket/types/services/ProfileSnapshotService.d.ts +++ b/TypeScript/24WebSocket/types/services/ProfileSnapshotService.d.ts @@ -1,21 +1,21 @@ -import { IAkiProfile } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class ProfileSnapshotService { protected cloner: ICloner; - protected storedProfileSnapshots: Record; + protected storedProfileSnapshots: Record; constructor(cloner: ICloner); /** * Store a profile into an in-memory object * @param sessionID session id - acts as the key * @param profile - profile to save */ - storeProfileSnapshot(sessionID: string, profile: IAkiProfile): void; + storeProfileSnapshot(sessionID: string, profile: ISptProfile): void; /** * Retreve a stored profile * @param sessionID key * @returns A player profile object */ - getProfileSnapshot(sessionID: string): IAkiProfile; + getProfileSnapshot(sessionID: string): ISptProfile | undefined; /** * Does a profile exists against the provided key * @param sessionID key diff --git a/TypeScript/24WebSocket/types/services/RagfairCategoriesService.d.ts b/TypeScript/24WebSocket/types/services/RagfairCategoriesService.d.ts index ef40275..c1ecb2d 100644 --- a/TypeScript/24WebSocket/types/services/RagfairCategoriesService.d.ts +++ b/TypeScript/24WebSocket/types/services/RagfairCategoriesService.d.ts @@ -1,7 +1,7 @@ -import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper"; -import { IRagfairOffer } from "@spt-aki/models/eft/ragfair/IRagfairOffer"; -import { ISearchRequestData } from "@spt-aki/models/eft/ragfair/ISearchRequestData"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; +import { PaymentHelper } from "@spt/helpers/PaymentHelper"; +import { IRagfairOffer } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ISearchRequestData } from "@spt/models/eft/ragfair/ISearchRequestData"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; export declare class RagfairCategoriesService { protected logger: ILogger; protected paymentHelper: PaymentHelper; diff --git a/TypeScript/24WebSocket/types/services/RagfairLinkedItemService.d.ts b/TypeScript/24WebSocket/types/services/RagfairLinkedItemService.d.ts index 3d607ac..0d03459 100644 --- a/TypeScript/24WebSocket/types/services/RagfairLinkedItemService.d.ts +++ b/TypeScript/24WebSocket/types/services/RagfairLinkedItemService.d.ts @@ -1,11 +1,11 @@ -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { DatabaseService } from "@spt/services/DatabaseService"; export declare class RagfairLinkedItemService { - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected itemHelper: ItemHelper; protected linkedItemsCache: Record>; - constructor(databaseServer: DatabaseServer, itemHelper: ItemHelper); + constructor(databaseService: DatabaseService, itemHelper: ItemHelper); getLinkedItems(linkedSearchId: string): Set; /** * Use ragfair linked item service to get an array of items that can fit on or in designated itemtpl diff --git a/TypeScript/24WebSocket/types/services/RagfairOfferService.d.ts b/TypeScript/24WebSocket/types/services/RagfairOfferService.d.ts index 80bf353..6c13b1d 100644 --- a/TypeScript/24WebSocket/types/services/RagfairOfferService.d.ts +++ b/TypeScript/24WebSocket/types/services/RagfairOfferService.d.ts @@ -1,41 +1,45 @@ -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { RagfairServerHelper } from "@spt-aki/helpers/RagfairServerHelper"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { IRagfairOffer } from "@spt-aki/models/eft/ragfair/IRagfairOffer"; -import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { EventOutputHolder } from "@spt-aki/routers/EventOutputHolder"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { SaveServer } from "@spt-aki/servers/SaveServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; -import { RagfairOfferHolder } from "@spt-aki/utils/RagfairOfferHolder"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { RagfairServerHelper } from "@spt/helpers/RagfairServerHelper"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IRagfairOffer } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; +import { RagfairOfferHolder } from "@spt/utils/RagfairOfferHolder"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class RagfairOfferService { protected logger: ILogger; protected timeUtil: TimeUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected saveServer: SaveServer; protected ragfairServerHelper: RagfairServerHelper; + protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; protected eventOutputHolder: EventOutputHolder; protected httpResponse: HttpResponseUtil; protected localisationService: LocalisationService; protected configServer: ConfigServer; + protected cloner: ICloner; protected playerOffersLoaded: boolean; /** Offer id + offer object */ protected expiredOffers: Record; protected ragfairConfig: IRagfairConfig; protected ragfairOfferHandler: RagfairOfferHolder; - constructor(logger: ILogger, timeUtil: TimeUtil, databaseServer: DatabaseServer, saveServer: SaveServer, ragfairServerHelper: RagfairServerHelper, profileHelper: ProfileHelper, eventOutputHolder: EventOutputHolder, httpResponse: HttpResponseUtil, localisationService: LocalisationService, configServer: ConfigServer); + constructor(logger: ILogger, timeUtil: TimeUtil, databaseService: DatabaseService, saveServer: SaveServer, ragfairServerHelper: RagfairServerHelper, itemHelper: ItemHelper, profileHelper: ProfileHelper, eventOutputHolder: EventOutputHolder, httpResponse: HttpResponseUtil, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); /** * Get all offers * @returns IRagfairOffer array */ getOffers(): IRagfairOffer[]; - getOfferByOfferId(offerId: string): IRagfairOffer; - getOffersOfType(templateId: string): IRagfairOffer[]; + getOfferByOfferId(offerId: string): IRagfairOffer | undefined; + getOffersOfType(templateId: string): IRagfairOffer[] | undefined; addOffer(offer: IRagfairOffer): void; addOfferToExpired(staleOffer: IRagfairOffer): void; /** @@ -84,4 +88,12 @@ export declare class RagfairOfferService { */ protected processStaleOffer(staleOffer: IRagfairOffer): void; protected returnPlayerOffer(playerOffer: IRagfairOffer): void; + /** + * Flea offer items are stacked up often beyond the StackMaxSize limit + * Un stack the items into an array of root items and their children + * Will create new items equal to the + * @param items Offer items to unstack + * @returns Unstacked array of items + */ + protected unstackOfferItems(items: Item[]): Item[]; } diff --git a/TypeScript/24WebSocket/types/services/RagfairPriceService.d.ts b/TypeScript/24WebSocket/types/services/RagfairPriceService.d.ts index f89967c..0a2f26e 100644 --- a/TypeScript/24WebSocket/types/services/RagfairPriceService.d.ts +++ b/TypeScript/24WebSocket/types/services/RagfairPriceService.d.ts @@ -1,26 +1,26 @@ -import { OnLoad } from "@spt-aki/di/OnLoad"; -import { HandbookHelper } from "@spt-aki/helpers/HandbookHelper"; -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { PresetHelper } from "@spt-aki/helpers/PresetHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { MinMax } from "@spt-aki/models/common/MinMax"; -import { IPreset } from "@spt-aki/models/eft/common/IGlobals"; -import { HandbookItem } from "@spt-aki/models/eft/common/tables/IHandbookBase"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { IBarterScheme } from "@spt-aki/models/eft/common/tables/ITrader"; -import { IRagfairConfig, IUnreasonableModPrices } from "@spt-aki/models/spt/config/IRagfairConfig"; -import { IRagfairServerPrices } from "@spt-aki/models/spt/ragfair/IRagfairServerPrices"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { OnLoad } from "@spt/di/OnLoad"; +import { HandbookHelper } from "@spt/helpers/HandbookHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { MinMax } from "@spt/models/common/MinMax"; +import { IPreset } from "@spt/models/eft/common/IGlobals"; +import { HandbookItem } from "@spt/models/eft/common/tables/IHandbookBase"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; +import { IRagfairConfig, IUnreasonableModPrices } from "@spt/models/spt/config/IRagfairConfig"; +import { IRagfairServerPrices } from "@spt/models/spt/ragfair/IRagfairServerPrices"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { RandomUtil } from "@spt/utils/RandomUtil"; /** * Stores flea prices for items as well as methods to interact with them */ export declare class RagfairPriceService implements OnLoad { protected handbookHelper: HandbookHelper; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected logger: ILogger; protected itemHelper: ItemHelper; protected presetHelper: PresetHelper; @@ -29,10 +29,8 @@ export declare class RagfairPriceService implements OnLoad { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected ragfairConfig: IRagfairConfig; - protected generatedDynamicPrices: boolean; - protected generatedStaticPrices: boolean; protected prices: IRagfairServerPrices; - constructor(handbookHelper: HandbookHelper, databaseServer: DatabaseServer, logger: ILogger, itemHelper: ItemHelper, presetHelper: PresetHelper, traderHelper: TraderHelper, randomUtil: RandomUtil, localisationService: LocalisationService, configServer: ConfigServer); + constructor(handbookHelper: HandbookHelper, databaseService: DatabaseService, logger: ILogger, itemHelper: ItemHelper, presetHelper: PresetHelper, traderHelper: TraderHelper, randomUtil: RandomUtil, localisationService: LocalisationService, configServer: ConfigServer); /** * Generate static (handbook) and dynamic (prices.json) flea prices, store inside class as dictionaries */ @@ -41,11 +39,11 @@ export declare class RagfairPriceService implements OnLoad { /** * Iterate over all items of type "Item" in db and get template price, store in cache */ - generateStaticPrices(): void; + refreshStaticPrices(): void; /** - * Create a dictionary and store prices from prices.json in it + * Copy the prices.json data into our dynamic price dictionary */ - generateDynamicPrices(): void; + refreshDynamicPrices(): void; /** * Get the dynamic price for an item. If value doesn't exist, use static (handbook) value. * if no static value, return 1 @@ -61,7 +59,6 @@ export declare class RagfairPriceService implements OnLoad { getFleaPriceForOfferItems(offerItems: Item[]): number; /** * get the dynamic (flea) price for an item - * Grabs prices from prices.json and stores in class if none currently exist * @param itemTpl item template id to look up * @returns price in roubles */ @@ -74,6 +71,7 @@ export declare class RagfairPriceService implements OnLoad { getStaticPriceForItem(itemTpl: string): number; /** * 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 * @returns Dictionary of item tpls and rouble cost */ getAllFleaPrices(): Record; diff --git a/TypeScript/24WebSocket/types/services/RagfairRequiredItemsService.d.ts b/TypeScript/24WebSocket/types/services/RagfairRequiredItemsService.d.ts index 6749c68..cfc224d 100644 --- a/TypeScript/24WebSocket/types/services/RagfairRequiredItemsService.d.ts +++ b/TypeScript/24WebSocket/types/services/RagfairRequiredItemsService.d.ts @@ -1,7 +1,7 @@ -import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper"; -import { IRagfairOffer } from "@spt-aki/models/eft/ragfair/IRagfairOffer"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { RagfairOfferService } from "@spt-aki/services/RagfairOfferService"; +import { PaymentHelper } from "@spt/helpers/PaymentHelper"; +import { IRagfairOffer } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { RagfairOfferService } from "@spt/services/RagfairOfferService"; export declare class RagfairRequiredItemsService { protected logger: ILogger; protected paymentHelper: PaymentHelper; diff --git a/TypeScript/24WebSocket/types/services/RagfairTaxService.d.ts b/TypeScript/24WebSocket/types/services/RagfairTaxService.d.ts index dd9cc5f..effb9f0 100644 --- a/TypeScript/24WebSocket/types/services/RagfairTaxService.d.ts +++ b/TypeScript/24WebSocket/types/services/RagfairTaxService.d.ts @@ -1,18 +1,18 @@ -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { IStorePlayerOfferTaxAmountRequestData } from "@spt-aki/models/eft/ragfair/IStorePlayerOfferTaxAmountRequestData"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { RagfairPriceService } from "@spt-aki/services/RagfairPriceService"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { IStorePlayerOfferTaxAmountRequestData } from "@spt/models/eft/ragfair/IStorePlayerOfferTaxAmountRequestData"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { RagfairPriceService } from "@spt/services/RagfairPriceService"; export declare class RagfairTaxService { protected logger: ILogger; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected ragfairPriceService: RagfairPriceService; protected itemHelper: ItemHelper; protected playerOfferTaxCache: Record; - constructor(logger: ILogger, databaseServer: DatabaseServer, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper); + constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper); storeClientOfferTaxValue(sessionId: string, offer: IStorePlayerOfferTaxAmountRequestData): void; clearStoredOfferTaxById(offerIdToRemove: string): void; getStoredClientOfferTaxValueById(offerIdToGet: string): IStorePlayerOfferTaxAmountRequestData; diff --git a/TypeScript/24WebSocket/types/services/RaidTimeAdjustmentService.d.ts b/TypeScript/24WebSocket/types/services/RaidTimeAdjustmentService.d.ts index a2a223a..bfc099a 100644 --- a/TypeScript/24WebSocket/types/services/RaidTimeAdjustmentService.d.ts +++ b/TypeScript/24WebSocket/types/services/RaidTimeAdjustmentService.d.ts @@ -1,23 +1,23 @@ -import { ApplicationContext } from "@spt-aki/context/ApplicationContext"; -import { WeightedRandomHelper } from "@spt-aki/helpers/WeightedRandomHelper"; -import { ILocationBase } from "@spt-aki/models/eft/common/ILocationBase"; -import { IGetRaidTimeRequest } from "@spt-aki/models/eft/game/IGetRaidTimeRequest"; -import { ExtractChange, IGetRaidTimeResponse } from "@spt-aki/models/eft/game/IGetRaidTimeResponse"; -import { ILocationConfig, IScavRaidTimeLocationSettings, LootMultiplier } from "@spt-aki/models/spt/config/ILocationConfig"; -import { IRaidChanges } from "@spt-aki/models/spt/location/IRaidChanges"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IGetRaidTimeRequest } from "@spt/models/eft/game/IGetRaidTimeRequest"; +import { ExtractChange, IGetRaidTimeResponse } from "@spt/models/eft/game/IGetRaidTimeResponse"; +import { ILocationConfig, IScavRaidTimeLocationSettings, LootMultiplier } from "@spt/models/spt/config/ILocationConfig"; +import { IRaidChanges } from "@spt/models/spt/location/IRaidChanges"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class RaidTimeAdjustmentService { protected logger: ILogger; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected randomUtil: RandomUtil; protected weightedRandomHelper: WeightedRandomHelper; protected applicationContext: ApplicationContext; protected configServer: ConfigServer; protected locationConfig: ILocationConfig; - constructor(logger: ILogger, databaseServer: DatabaseServer, randomUtil: RandomUtil, weightedRandomHelper: WeightedRandomHelper, applicationContext: ApplicationContext, configServer: ConfigServer); + constructor(logger: ILogger, databaseService: DatabaseService, randomUtil: RandomUtil, weightedRandomHelper: WeightedRandomHelper, applicationContext: ApplicationContext, configServer: ConfigServer); /** * Make alterations to the base map data passed in * Loot multipliers/waves/wave start times @@ -56,5 +56,5 @@ export declare class RaidTimeAdjustmentService { * @param newRaidTimeMinutes How long raid is in minutes * @returns List of exit changes to send to client */ - protected getExitAdjustments(mapBase: ILocationBase, newRaidTimeMinutes: number): ExtractChange[]; + protected getExitAdjustments(mapBase: ILocationBase, newRaidTimeMinutes: number): ExtractChange[] | undefined; } diff --git a/TypeScript/24WebSocket/types/services/RepairService.d.ts b/TypeScript/24WebSocket/types/services/RepairService.d.ts index cc90eee..48f306e 100644 --- a/TypeScript/24WebSocket/types/services/RepairService.d.ts +++ b/TypeScript/24WebSocket/types/services/RepairService.d.ts @@ -1,26 +1,26 @@ -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { RepairHelper } from "@spt-aki/helpers/RepairHelper"; -import { TraderHelper } from "@spt-aki/helpers/TraderHelper"; -import { WeightedRandomHelper } from "@spt-aki/helpers/WeightedRandomHelper"; -import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; -import { Item } from "@spt-aki/models/eft/common/tables/IItem"; -import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { RepairKitsInfo } from "@spt-aki/models/eft/repair/IRepairActionDataRequest"; -import { RepairItem } from "@spt-aki/models/eft/repair/ITraderRepairActionDataRequest"; -import { BonusType } from "@spt-aki/models/enums/BonusType"; -import { SkillTypes } from "@spt-aki/models/enums/SkillTypes"; -import { BonusSettings, IRepairConfig } from "@spt-aki/models/spt/config/IRepairConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { PaymentService } from "@spt-aki/services/PaymentService"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { RepairHelper } from "@spt/helpers/RepairHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Item } from "@spt/models/eft/common/tables/IItem"; +import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { RepairKitsInfo } from "@spt/models/eft/repair/IRepairActionDataRequest"; +import { RepairItem } from "@spt/models/eft/repair/ITraderRepairActionDataRequest"; +import { BonusType } from "@spt/models/enums/BonusType"; +import { SkillTypes } from "@spt/models/enums/SkillTypes"; +import { BonusSettings, IRepairConfig } from "@spt/models/spt/config/IRepairConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { PaymentService } from "@spt/services/PaymentService"; +import { RandomUtil } from "@spt/utils/RandomUtil"; export declare class RepairService { protected logger: ILogger; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected profileHelper: ProfileHelper; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; @@ -31,7 +31,7 @@ export declare class RepairService { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected repairConfig: IRepairConfig; - constructor(logger: ILogger, databaseServer: DatabaseServer, profileHelper: ProfileHelper, randomUtil: RandomUtil, itemHelper: ItemHelper, traderHelper: TraderHelper, weightedRandomHelper: WeightedRandomHelper, paymentService: PaymentService, repairHelper: RepairHelper, localisationService: LocalisationService, configServer: ConfigServer); + constructor(logger: ILogger, databaseService: DatabaseService, profileHelper: ProfileHelper, randomUtil: RandomUtil, itemHelper: ItemHelper, traderHelper: TraderHelper, weightedRandomHelper: WeightedRandomHelper, paymentService: PaymentService, repairHelper: RepairHelper, localisationService: LocalisationService, configServer: ConfigServer); /** * Use trader to repair an items durability * @param sessionID Session id diff --git a/TypeScript/24WebSocket/types/services/SeasonalEventService.d.ts b/TypeScript/24WebSocket/types/services/SeasonalEventService.d.ts index ecb34fa..0750f38 100644 --- a/TypeScript/24WebSocket/types/services/SeasonalEventService.d.ts +++ b/TypeScript/24WebSocket/types/services/SeasonalEventService.d.ts @@ -1,22 +1,22 @@ -import { BotHelper } from "@spt-aki/helpers/BotHelper"; -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { IConfig } from "@spt-aki/models/eft/common/IGlobals"; -import { Inventory } from "@spt-aki/models/eft/common/tables/IBotType"; -import { Season } from "@spt-aki/models/enums/Season"; -import { SeasonalEventType } from "@spt-aki/models/enums/SeasonalEventType"; -import { IHttpConfig } from "@spt-aki/models/spt/config/IHttpConfig"; -import { IQuestConfig } from "@spt-aki/models/spt/config/IQuestConfig"; -import { ISeasonalEvent, ISeasonalEventConfig } from "@spt-aki/models/spt/config/ISeasonalEventConfig"; -import { IWeatherConfig } from "@spt-aki/models/spt/config/IWeatherConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { GiftService } from "@spt-aki/services/GiftService"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { DatabaseImporter } from "@spt-aki/utils/DatabaseImporter"; +import { BotHelper } from "@spt/helpers/BotHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IConfig } from "@spt/models/eft/common/IGlobals"; +import { Inventory } from "@spt/models/eft/common/tables/IBotType"; +import { Season } from "@spt/models/enums/Season"; +import { SeasonalEventType } from "@spt/models/enums/SeasonalEventType"; +import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; +import { IQuestConfig } from "@spt/models/spt/config/IQuestConfig"; +import { ISeasonalEvent, ISeasonalEventConfig } from "@spt/models/spt/config/ISeasonalEventConfig"; +import { IWeatherConfig } from "@spt/models/spt/config/IWeatherConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { GiftService } from "@spt/services/GiftService"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { DatabaseImporter } from "@spt/utils/DatabaseImporter"; export declare class SeasonalEventService { protected logger: ILogger; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected databaseImporter: DatabaseImporter; protected giftService: GiftService; protected localisationService: LocalisationService; @@ -27,11 +27,11 @@ export declare class SeasonalEventService { protected questConfig: IQuestConfig; protected httpConfig: IHttpConfig; protected weatherConfig: IWeatherConfig; - protected halloweenEventActive: boolean; - protected christmasEventActive: boolean; + protected halloweenEventActive?: boolean; + protected christmasEventActive?: boolean; /** All events active at this point in time */ protected currentlyActiveEvents: SeasonalEventType[]; - constructor(logger: ILogger, databaseServer: DatabaseServer, databaseImporter: DatabaseImporter, giftService: GiftService, localisationService: LocalisationService, botHelper: BotHelper, profileHelper: ProfileHelper, configServer: ConfigServer); + constructor(logger: ILogger, databaseService: DatabaseService, databaseImporter: DatabaseImporter, giftService: GiftService, localisationService: LocalisationService, botHelper: BotHelper, profileHelper: ProfileHelper, configServer: ConfigServer); protected get christmasEventItems(): string[]; protected get halloweenEventItems(): string[]; /** @@ -146,9 +146,9 @@ export declare class SeasonalEventService { /** * Send gift to player if they'e not already received it * @param playerId Player to send gift to - * @param giftkey Key of gift to give + * @param giftKey Key of gift to give */ - protected giveGift(playerId: string, giftkey: string): void; + protected giveGift(playerId: string, giftKey: string): void; /** * Get the underlying bot type for an event bot e.g. `peacefullZryachiyEvent` will return `bossZryachiy` * @param eventBotRole Event bot role type diff --git a/TypeScript/24WebSocket/types/services/TraderAssortService.d.ts b/TypeScript/24WebSocket/types/services/TraderAssortService.d.ts index 9130de6..48af0b7 100644 --- a/TypeScript/24WebSocket/types/services/TraderAssortService.d.ts +++ b/TypeScript/24WebSocket/types/services/TraderAssortService.d.ts @@ -1,4 +1,4 @@ -import { ITraderAssort } from "@spt-aki/models/eft/common/tables/ITrader"; +import { ITraderAssort } from "@spt/models/eft/common/tables/ITrader"; export declare class TraderAssortService { protected pristineTraderAssorts: Record; getPristineTraderAssort(traderId: string): ITraderAssort; diff --git a/TypeScript/24WebSocket/types/services/TraderPurchasePersisterService.d.ts b/TypeScript/24WebSocket/types/services/TraderPurchasePersisterService.d.ts index 92aaec3..6bef9f5 100644 --- a/TypeScript/24WebSocket/types/services/TraderPurchasePersisterService.d.ts +++ b/TypeScript/24WebSocket/types/services/TraderPurchasePersisterService.d.ts @@ -1,11 +1,11 @@ -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { TraderPurchaseData } from "@spt-aki/models/eft/profile/IAkiProfile"; -import { ITraderConfig } from "@spt-aki/models/spt/config/ITraderConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { RandomUtil } from "@spt-aki/utils/RandomUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderPurchaseData } from "@spt/models/eft/profile/ISptProfile"; +import { ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; /** * Help with storing limited item purchases from traders in profile to persist them over server restarts */ @@ -24,7 +24,7 @@ export declare class TraderPurchasePersisterService { * @param traderId Trader to loop up purchases for * @returns Dict of assort id and count purchased */ - getProfileTraderPurchases(sessionId: string, traderId: string): Record; + getProfileTraderPurchases(sessionId: string, traderId: string): Record | undefined; /** * Get a purchase made from a trader for requested profile before the last trader reset * @param sessionId Session id @@ -32,7 +32,7 @@ export declare class TraderPurchasePersisterService { * @param assortId Id of assort to get data for * @returns TraderPurchaseData */ - getProfileTraderPurchase(sessionId: string, traderId: string, assortId: string): TraderPurchaseData; + getProfileTraderPurchase(sessionId: string, traderId: string, assortId: string): TraderPurchaseData | undefined; /** * Remove all trader purchase records from all profiles that exist * @param traderId Traders id diff --git a/TypeScript/24WebSocket/types/services/TraderServicesService.d.ts b/TypeScript/24WebSocket/types/services/TraderServicesService.d.ts index cfad219..e441eb6 100644 --- a/TypeScript/24WebSocket/types/services/TraderServicesService.d.ts +++ b/TypeScript/24WebSocket/types/services/TraderServicesService.d.ts @@ -1,13 +1,13 @@ -import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper"; -import { ITraderServiceModel } from "@spt-aki/models/spt/services/ITraderServiceModel"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class TraderServicesService { protected profileHelper: ProfileHelper; protected logger: ILogger; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected cloner: ICloner; - constructor(profileHelper: ProfileHelper, logger: ILogger, databaseServer: DatabaseServer, cloner: ICloner); + constructor(profileHelper: ProfileHelper, logger: ILogger, databaseService: DatabaseService, cloner: ICloner); getTraderServices(sessionId: string, traderId: string): ITraderServiceModel[]; } diff --git a/TypeScript/24WebSocket/types/services/cache/BundleHashCacheService.d.ts b/TypeScript/24WebSocket/types/services/cache/BundleHashCacheService.d.ts index 00f5e4c..f8289c2 100644 --- a/TypeScript/24WebSocket/types/services/cache/BundleHashCacheService.d.ts +++ b/TypeScript/24WebSocket/types/services/cache/BundleHashCacheService.d.ts @@ -1,7 +1,7 @@ -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { VFS } from "@spt-aki/utils/VFS"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { JsonUtil } from "@spt/utils/JsonUtil"; +import { VFS } from "@spt/utils/VFS"; export declare class BundleHashCacheService { protected vfs: VFS; protected hashUtil: HashUtil; diff --git a/TypeScript/24WebSocket/types/services/cache/ModHashCacheService.d.ts b/TypeScript/24WebSocket/types/services/cache/ModHashCacheService.d.ts index dd33640..3cb8ff8 100644 --- a/TypeScript/24WebSocket/types/services/cache/ModHashCacheService.d.ts +++ b/TypeScript/24WebSocket/types/services/cache/ModHashCacheService.d.ts @@ -1,7 +1,7 @@ -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { VFS } from "@spt-aki/utils/VFS"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { JsonUtil } from "@spt/utils/JsonUtil"; +import { VFS } from "@spt/utils/VFS"; export declare class ModHashCacheService { protected vfs: VFS; protected hashUtil: HashUtil; diff --git a/TypeScript/24WebSocket/types/services/mod/CustomItemService.d.ts b/TypeScript/24WebSocket/types/services/mod/CustomItemService.d.ts index 8af560d..1926bed 100644 --- a/TypeScript/24WebSocket/types/services/mod/CustomItemService.d.ts +++ b/TypeScript/24WebSocket/types/services/mod/CustomItemService.d.ts @@ -1,21 +1,19 @@ -import { ItemHelper } from "@spt-aki/helpers/ItemHelper"; -import { ITemplateItem, Props } from "@spt-aki/models/eft/common/tables/ITemplateItem"; -import { CreateItemResult, LocaleDetails, NewItemDetails, NewItemFromCloneDetails } from "@spt-aki/models/spt/mod/NewItemDetails"; -import { IDatabaseTables } from "@spt-aki/models/spt/server/IDatabaseTables"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { ItemBaseClassService } from "@spt-aki/services/ItemBaseClassService"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { ITemplateItem, Props } from "@spt/models/eft/common/tables/ITemplateItem"; +import { CreateItemResult, LocaleDetails, NewItemDetails, NewItemFromCloneDetails } from "@spt/models/spt/mod/NewItemDetails"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseService } from "@spt/services/DatabaseService"; +import { ItemBaseClassService } from "@spt/services/ItemBaseClassService"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { HashUtil } from "@spt/utils/HashUtil"; export declare class CustomItemService { protected logger: ILogger; protected hashUtil: HashUtil; - protected databaseServer: DatabaseServer; + protected databaseService: DatabaseService; protected itemHelper: ItemHelper; protected itemBaseClassService: ItemBaseClassService; protected cloner: ICloner; - protected tables: IDatabaseTables; - constructor(logger: ILogger, hashUtil: HashUtil, databaseServer: DatabaseServer, itemHelper: ItemHelper, itemBaseClassService: ItemBaseClassService, cloner: ICloner); + constructor(logger: ILogger, hashUtil: HashUtil, databaseService: DatabaseService, itemHelper: ItemHelper, itemBaseClassService: ItemBaseClassService, cloner: ICloner); /** * Create a new item from a cloned item base * 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 diff --git a/TypeScript/24WebSocket/types/services/mod/dynamicRouter/DynamicRouterMod.d.ts b/TypeScript/24WebSocket/types/services/mod/dynamicRouter/DynamicRouterMod.d.ts index 5eed5b4..bb969b3 100644 --- a/TypeScript/24WebSocket/types/services/mod/dynamicRouter/DynamicRouterMod.d.ts +++ b/TypeScript/24WebSocket/types/services/mod/dynamicRouter/DynamicRouterMod.d.ts @@ -1,4 +1,4 @@ -import { DynamicRouter, RouteAction } from "@spt-aki/di/Router"; +import { DynamicRouter, RouteAction } from "@spt/di/Router"; export declare class DynamicRouterMod extends DynamicRouter { private topLevelRoute; constructor(routes: RouteAction[], topLevelRoute: string); diff --git a/TypeScript/24WebSocket/types/services/mod/dynamicRouter/DynamicRouterModService.d.ts b/TypeScript/24WebSocket/types/services/mod/dynamicRouter/DynamicRouterModService.d.ts index 648d191..3c9d955 100644 --- a/TypeScript/24WebSocket/types/services/mod/dynamicRouter/DynamicRouterModService.d.ts +++ b/TypeScript/24WebSocket/types/services/mod/dynamicRouter/DynamicRouterModService.d.ts @@ -1,5 +1,5 @@ import { DependencyContainer } from "tsyringe"; -import { RouteAction } from "@spt-aki/di/Router"; +import { RouteAction } from "@spt/di/Router"; export declare class DynamicRouterModService { private container; constructor(container: DependencyContainer); diff --git a/TypeScript/24WebSocket/types/services/mod/httpListener/HttpListenerMod.d.ts b/TypeScript/24WebSocket/types/services/mod/httpListener/HttpListenerMod.d.ts index 723b78d..75e42ee 100644 --- a/TypeScript/24WebSocket/types/services/mod/httpListener/HttpListenerMod.d.ts +++ b/TypeScript/24WebSocket/types/services/mod/httpListener/HttpListenerMod.d.ts @@ -1,6 +1,6 @@ /// import { IncomingMessage, ServerResponse } from "node:http"; -import { IHttpListener } from "@spt-aki/servers/http/IHttpListener"; +import { IHttpListener } from "@spt/servers/http/IHttpListener"; export declare class HttpListenerMod implements IHttpListener { private canHandleOverride; private handleOverride; diff --git a/TypeScript/24WebSocket/types/services/mod/onLoad/OnLoadMod.d.ts b/TypeScript/24WebSocket/types/services/mod/onLoad/OnLoadMod.d.ts index 2bd5a31..6544704 100644 --- a/TypeScript/24WebSocket/types/services/mod/onLoad/OnLoadMod.d.ts +++ b/TypeScript/24WebSocket/types/services/mod/onLoad/OnLoadMod.d.ts @@ -1,4 +1,4 @@ -import { OnLoad } from "@spt-aki/di/OnLoad"; +import { OnLoad } from "@spt/di/OnLoad"; export declare class OnLoadMod implements OnLoad { private onLoadOverride; private getRouteOverride; diff --git a/TypeScript/24WebSocket/types/services/mod/onUpdate/OnUpdateMod.d.ts b/TypeScript/24WebSocket/types/services/mod/onUpdate/OnUpdateMod.d.ts index bef1d1c..3a8a26f 100644 --- a/TypeScript/24WebSocket/types/services/mod/onUpdate/OnUpdateMod.d.ts +++ b/TypeScript/24WebSocket/types/services/mod/onUpdate/OnUpdateMod.d.ts @@ -1,4 +1,4 @@ -import { OnUpdate } from "@spt-aki/di/OnUpdate"; +import { OnUpdate } from "@spt/di/OnUpdate"; export declare class OnUpdateMod implements OnUpdate { private onUpdateOverride; private getRouteOverride; diff --git a/TypeScript/24WebSocket/types/services/mod/staticRouter/StaticRouterMod.d.ts b/TypeScript/24WebSocket/types/services/mod/staticRouter/StaticRouterMod.d.ts index e01aaab..48bf4a1 100644 --- a/TypeScript/24WebSocket/types/services/mod/staticRouter/StaticRouterMod.d.ts +++ b/TypeScript/24WebSocket/types/services/mod/staticRouter/StaticRouterMod.d.ts @@ -1,4 +1,4 @@ -import { RouteAction, StaticRouter } from "@spt-aki/di/Router"; +import { RouteAction, StaticRouter } from "@spt/di/Router"; export declare class StaticRouterMod extends StaticRouter { private topLevelRoute; constructor(routes: RouteAction[], topLevelRoute: string); diff --git a/TypeScript/24WebSocket/types/services/mod/staticRouter/StaticRouterModService.d.ts b/TypeScript/24WebSocket/types/services/mod/staticRouter/StaticRouterModService.d.ts index 775caae..f60432d 100644 --- a/TypeScript/24WebSocket/types/services/mod/staticRouter/StaticRouterModService.d.ts +++ b/TypeScript/24WebSocket/types/services/mod/staticRouter/StaticRouterModService.d.ts @@ -1,5 +1,5 @@ import { DependencyContainer } from "tsyringe"; -import { RouteAction } from "@spt-aki/di/Router"; +import { RouteAction } from "@spt/di/Router"; export declare class StaticRouterModService { protected container: DependencyContainer; constructor(container: DependencyContainer); diff --git a/TypeScript/24WebSocket/types/tools/ItemTplGenerator/ItemTplGenerator.d.ts b/TypeScript/24WebSocket/types/tools/ItemTplGenerator/ItemTplGenerator.d.ts new file mode 100644 index 0000000..409909f --- /dev/null +++ b/TypeScript/24WebSocket/types/tools/ItemTplGenerator/ItemTplGenerator.d.ts @@ -0,0 +1,81 @@ +/** + * Dynamically generate the following two files: + * - src/models/enums/ItemTpl.ts + * - src/models/enums/Weapons.ts + * + * Based on data from the assets/database folders. + * + * Usage: + * - Run this script using npm: `npm run gen:items` + * + * Notes: + * - Ensure that all necessary Node.js modules are installed before running the script: `npm install` + * - The following rules are used for determining item base names: + * -- Certain items are manually overridden by itemOverrides.ts, when the names are not unique enough + * -- Random containers, built in inserts and stashes utilize the item's _name property + * -- Ammo, ammo boxes, and magazines utilize the item's English locale ShortName property + * -- All other items utilize the item's English locale Name property + * -- In the event the above rules fail, the fallback order is the Englick locale Name property, then the item's _name property + * -- Trailing and leading whitespace is stripped, special characters are removed, and spaces are replaced with underscores + * - Item caliber data is cleaned of the words "CALIBER", "PARA" and "NATO", as well as replacing "1143x23ACP" with "45ACP" for consistency + * - Damaged ammo boxes are suffixed with "_DAMAGED" + * - The parent item type prefix is grouped more than the base item list, see "getParentName" for the rules around this + * - Finalized enum names are created as a combination of the parent name, prefix, item name, and suffix + */ +import { OnLoad } from "@spt/di/OnLoad"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { LocaleService } from "@spt/services/LocaleService"; +export declare class ItemTplGenerator { + protected databaseServer: DatabaseServer; + protected localeService: LocaleService; + protected logger: ILogger; + protected itemHelper: ItemHelper; + protected onLoadComponents: OnLoad[]; + private enumDir; + private items; + private itemOverrides; + private collidedEnumKeys; + constructor(databaseServer: DatabaseServer, localeService: LocaleService, logger: ILogger, itemHelper: ItemHelper, onLoadComponents: OnLoad[]); + run(): Promise; + /** + * Return an object containing all items in the game with a generated name + * @returns An object containing a generated item name to item ID association + */ + private generateItemsObject; + /** + * + * @param orderedItemsObject The previously generated object of item name to item ID associations + * @returns + */ + private generateWeaponsObject; + /** + * Clear any non-alpha numeric characters, and fix multiple underscores + * @param enumKey The enum key to sanitize + * @returns The sanitized enum key + */ + private sanitizeEnumKey; + private getParentName; + private isValidItem; + /** + * Generate a prefix for the passed in item + * @param item The item to generate the prefix for + * @returns The prefix of the given item + */ + private getItemPrefix; + private getItemSuffix; + private getAmmoPrefix; + private cleanCaliber; + private getAmmoBoxPrefix; + private getMagazinePrefix; + /** + * Return the name of the passed in item, formatted for use in an enum + * @param item The item to generate the name for + * @returns The name of the given item + */ + private getItemName; + private getItemNameSuffix; + private logEnumValueChanges; + private writeEnumsToFile; +} diff --git a/TypeScript/24WebSocket/types/tools/ItemTplGenerator/ItemTplGeneratorProgram.d.ts b/TypeScript/24WebSocket/types/tools/ItemTplGenerator/ItemTplGeneratorProgram.d.ts new file mode 100644 index 0000000..994bef8 --- /dev/null +++ b/TypeScript/24WebSocket/types/tools/ItemTplGenerator/ItemTplGeneratorProgram.d.ts @@ -0,0 +1,7 @@ +import "reflect-metadata"; +import "source-map-support/register"; +export declare class ItemTplGeneratorProgram { + private errorHandler; + constructor(); + start(): Promise; +} diff --git a/TypeScript/24WebSocket/types/tools/ItemTplGenerator/itemOverrides.d.ts b/TypeScript/24WebSocket/types/tools/ItemTplGenerator/itemOverrides.d.ts new file mode 100644 index 0000000..fb2ba9a --- /dev/null +++ b/TypeScript/24WebSocket/types/tools/ItemTplGenerator/itemOverrides.d.ts @@ -0,0 +1,75 @@ +/** + * An object containing item name overrides for use with ItemTplGenerator + */ +declare const _default: { + "5963866b86f7747bfa1c4462": string; + "5963866286f7747bf429b572": string; + "614451b71e5874611e2c7ae5": string; + "557ffd194bdc2d28148b457f": string; + "627a4e6b255f7527fb05a0f6": string; + "65e080be269cbd5c5005e529": string; + "64cbd95a29b9b4283e216ff5": string; + "665ee77ccf2d642e98220bca": string; + "6662e9f37fa79a6d83730fa0": string; + "6662ea05f6259762c56f3189": string; + "6662e9aca7e0b43baa3d5f74": string; + "6662e9cda7e0b43baa3d5f76": string; + "590de92486f77423d9312a33": string; + "5937fc6786f7742cab753590": string; + "5937fd0086f7742bf33fc198": string; + "638cbb3ba63f1b49be6a300e": string; + "5eff135be0d3331e9d282b7b": string; + "638e9d5536b3b72c944e2fc7": string; + "5a29357286f77409c705e025": string; + "5939e9b286f77462a709572c": string; + "591093bb86f7747caa7bb2ee": string; + "61904c9df62c89219a56e034": string; + "638cbc68a63f1b49be6a3010": string; + "619252352be33f26043400a7": string; + "5a29284f86f77463ef3db363": string; + "64b91627dd13d43b9d01d6d1": string; + "5a29276886f77435ed1b117c": string; + "628393620d8524273e7eb028": string; + "638dfc803083a019d447768e": string; + "638e0057ab150a5f56238960": string; + "6393262086e646067c176aa2": string; + "63989ced706b793c7d60cfef": string; + "6398a072e301557ae24cec92": string; + "6398a0861c712b1e1d4dadf1": string; + "638e0752ab150a5f56238962": string; + "638e06c4b8bac37a110ed56d": string; + "63927b29c115f907b14700b9": string; + "5939e5a786f77461f11c0098": string; + "591092ef86f7747bb8703422": string; + "5938188786f77474f723e87f": string; + "593965cf86f774087a77e1b6": string; + "5938878586f7741b797c562f": string; + "5a6860d886f77411cd3a9e47": string; + "638cbb0f7f97256fac16167a": string; + "664a5775f3d3570fba06be64": string; + "664b69c5a082271bc46c4e11": string; + "664b69e8e1238e506d3630af": string; + "6575a6ca8778e96ded05a802": string; + "6614217b6d9d5abcad0ff098": string; + "6614230055afee107f05e998": string; + "661421c7c1f2f548c50ee649": string; + "661423200d240a5f5d0f679b": string; + "5d1340b3d7ad1a0b52682ed7": string; + "55802d5f4bdc2dac148b458e": string; + "5d1340cad7ad1a0b0b249869": string; + "5d1340bdd7ad1a0e8d245aab": string; + "5cbdaf89ae9215000e5b9c94": string; + "5e21a3c67e40bd02257a008a": string; + "5914944186f774189e5e76c2": string; + "5937ef2b86f77408a47244b3": string; + "59387ac686f77401442ddd61": string; + "61aa1e9a32a4743c3453d2cf": string; + "61aa1ead84ea0800645777fd": string; + "5b6d9ce188a4501afc1b2b25": string; + "5c0a840b86f7742ffa4f2482": string; + "5d235bb686f77443f4331278": string; + "5e81ebcd8e146c7080625e15": string; + "639c3fbbd0446708ee622ee9": string; + "639af924d0446708ee62294e": string; +}; +export default _default; diff --git a/TypeScript/24WebSocket/types/utils/App.d.ts b/TypeScript/24WebSocket/types/utils/App.d.ts index 12a29bd..211044e 100644 --- a/TypeScript/24WebSocket/types/utils/App.d.ts +++ b/TypeScript/24WebSocket/types/utils/App.d.ts @@ -1,12 +1,12 @@ -import { OnLoad } from "@spt-aki/di/OnLoad"; -import { OnUpdate } from "@spt-aki/di/OnUpdate"; -import { ICoreConfig } from "@spt-aki/models/spt/config/ICoreConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { HttpServer } from "@spt-aki/servers/HttpServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { EncodingUtil } from "@spt-aki/utils/EncodingUtil"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { OnLoad } from "@spt/di/OnLoad"; +import { OnUpdate } from "@spt/di/OnUpdate"; +import { ICoreConfig } from "@spt/models/spt/config/ICoreConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { HttpServer } from "@spt/servers/HttpServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { EncodingUtil } from "@spt/utils/EncodingUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class App { protected logger: ILogger; protected timeUtil: TimeUtil; diff --git a/TypeScript/24WebSocket/types/utils/AsyncQueue.d.ts b/TypeScript/24WebSocket/types/utils/AsyncQueue.d.ts index 2fab517..a14181d 100644 --- a/TypeScript/24WebSocket/types/utils/AsyncQueue.d.ts +++ b/TypeScript/24WebSocket/types/utils/AsyncQueue.d.ts @@ -1,5 +1,5 @@ -import { IAsyncQueue } from "@spt-aki/models/spt/utils/IAsyncQueue"; -import { ICommand } from "@spt-aki/models/spt/utils/ICommand"; +import { IAsyncQueue } from "@spt/models/spt/utils/IAsyncQueue"; +import { ICommand } from "@spt/models/spt/utils/ICommand"; export declare class AsyncQueue implements IAsyncQueue { protected commandsQueue: ICommand[]; constructor(); diff --git a/TypeScript/24WebSocket/types/utils/DatabaseImporter.d.ts b/TypeScript/24WebSocket/types/utils/DatabaseImporter.d.ts index f8218bf..4005d46 100644 --- a/TypeScript/24WebSocket/types/utils/DatabaseImporter.d.ts +++ b/TypeScript/24WebSocket/types/utils/DatabaseImporter.d.ts @@ -1,15 +1,15 @@ -import { OnLoad } from "@spt-aki/di/OnLoad"; -import { IHttpConfig } from "@spt-aki/models/spt/config/IHttpConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ImageRouter } from "@spt-aki/routers/ImageRouter"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { EncodingUtil } from "@spt-aki/utils/EncodingUtil"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { ImporterUtil } from "@spt-aki/utils/ImporterUtil"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { VFS } from "@spt-aki/utils/VFS"; +import { OnLoad } from "@spt/di/OnLoad"; +import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ImageRouter } from "@spt/routers/ImageRouter"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { EncodingUtil } from "@spt/utils/EncodingUtil"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { ImporterUtil } from "@spt/utils/ImporterUtil"; +import { JsonUtil } from "@spt/utils/JsonUtil"; +import { VFS } from "@spt/utils/VFS"; export declare class DatabaseImporter implements OnLoad { protected logger: ILogger; protected vfs: VFS; @@ -27,7 +27,7 @@ export declare class DatabaseImporter implements OnLoad { protected httpConfig: IHttpConfig; constructor(logger: ILogger, vfs: VFS, jsonUtil: JsonUtil, localisationService: LocalisationService, databaseServer: DatabaseServer, imageRouter: ImageRouter, encodingUtil: EncodingUtil, hashUtil: HashUtil, importerUtil: ImporterUtil, configServer: ConfigServer); /** - * Get path to aki data + * Get path to spt data * @returns path to data */ getSptDataPath(): string; diff --git a/TypeScript/24WebSocket/types/utils/HashUtil.d.ts b/TypeScript/24WebSocket/types/utils/HashUtil.d.ts index d428072..427c186 100644 --- a/TypeScript/24WebSocket/types/utils/HashUtil.d.ts +++ b/TypeScript/24WebSocket/types/utils/HashUtil.d.ts @@ -2,7 +2,7 @@ /// import crypto from "node:crypto"; import fs from "node:fs"; -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class HashUtil { protected timeUtil: TimeUtil; constructor(timeUtil: TimeUtil); diff --git a/TypeScript/24WebSocket/types/utils/HttpFileUtil.d.ts b/TypeScript/24WebSocket/types/utils/HttpFileUtil.d.ts index 222d204..cc0d9ef 100644 --- a/TypeScript/24WebSocket/types/utils/HttpFileUtil.d.ts +++ b/TypeScript/24WebSocket/types/utils/HttpFileUtil.d.ts @@ -1,6 +1,6 @@ /// import { ServerResponse } from "node:http"; -import { HttpServerHelper } from "@spt-aki/helpers/HttpServerHelper"; +import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; export declare class HttpFileUtil { protected httpServerHelper: HttpServerHelper; constructor(httpServerHelper: HttpServerHelper); diff --git a/TypeScript/24WebSocket/types/utils/HttpResponseUtil.d.ts b/TypeScript/24WebSocket/types/utils/HttpResponseUtil.d.ts index 318e98b..ff84544 100644 --- a/TypeScript/24WebSocket/types/utils/HttpResponseUtil.d.ts +++ b/TypeScript/24WebSocket/types/utils/HttpResponseUtil.d.ts @@ -1,9 +1,9 @@ -import { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData"; -import { INullResponseData } from "@spt-aki/models/eft/httpResponse/INullResponseData"; -import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; -import { BackendErrorCodes } from "@spt-aki/models/enums/BackendErrorCodes"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; +import { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData"; +import { INullResponseData } from "@spt/models/eft/httpResponse/INullResponseData"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { BackendErrorCodes } from "@spt/models/enums/BackendErrorCodes"; +import { LocalisationService } from "@spt/services/LocalisationService"; +import { JsonUtil } from "@spt/utils/JsonUtil"; export declare class HttpResponseUtil { protected jsonUtil: JsonUtil; protected localisationService: LocalisationService; @@ -22,8 +22,8 @@ export declare class HttpResponseUtil { * @param errmsg * @returns */ - getBody(data: T, err?: number, errmsg?: any, sanitize?: boolean): IGetBodyResponseData; - getUnclearedBody(data: any, err?: number, errmsg?: any): string; + getBody(data: T, err?: number, errmsg?: string, sanitize?: boolean): IGetBodyResponseData; + getUnclearedBody(data: any, err?: number, errmsg?: string): string; emptyResponse(): IGetBodyResponseData; nullResponse(): INullResponseData; emptyArrayResponse(): IGetBodyResponseData; diff --git a/TypeScript/24WebSocket/types/utils/ImporterUtil.d.ts b/TypeScript/24WebSocket/types/utils/ImporterUtil.d.ts index 7ce1bdb..c36bcb5 100644 --- a/TypeScript/24WebSocket/types/utils/ImporterUtil.d.ts +++ b/TypeScript/24WebSocket/types/utils/ImporterUtil.d.ts @@ -1,5 +1,5 @@ -import { JsonUtil } from "@spt-aki/utils/JsonUtil"; -import { VFS } from "@spt-aki/utils/VFS"; +import { JsonUtil } from "@spt/utils/JsonUtil"; +import { VFS } from "@spt/utils/VFS"; export declare class ImporterUtil { protected vfs: VFS; protected jsonUtil: JsonUtil; diff --git a/TypeScript/24WebSocket/types/utils/JsonUtil.d.ts b/TypeScript/24WebSocket/types/utils/JsonUtil.d.ts index 091aba2..b30822c 100644 --- a/TypeScript/24WebSocket/types/utils/JsonUtil.d.ts +++ b/TypeScript/24WebSocket/types/utils/JsonUtil.d.ts @@ -1,12 +1,12 @@ import { IParseOptions, IStringifyOptions, Reviver } from "jsonc/lib/interfaces"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { HashUtil } from "@spt-aki/utils/HashUtil"; -import { VFS } from "@spt-aki/utils/VFS"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { VFS } from "@spt/utils/VFS"; export declare class JsonUtil { protected vfs: VFS; protected hashUtil: HashUtil; protected logger: ILogger; - protected fileHashes: any; + protected fileHashes?: Map; protected jsonCacheExists: boolean; protected jsonCachePath: string; constructor(vfs: VFS, hashUtil: HashUtil, logger: ILogger); @@ -32,15 +32,15 @@ export declare class JsonUtil { * @param options Stringify options or a replacer. * @returns The string converted from the JavaScript value */ - serializeJsonC(data: any, filename?: string | null, options?: IStringifyOptions | Reviver): string; - serializeJson5(data: any, filename?: string | null, prettify?: boolean): string; + serializeJsonC(data: any, filename?: string | undefined, options?: IStringifyOptions | Reviver): string | undefined; + serializeJson5(data: any, filename?: string | undefined, prettify?: boolean): string | undefined; /** * From string to object * @param jsonString json string to turn into object * @param filename Name of file being deserialized * @returns object */ - deserialize(jsonString: string, filename?: string): T; + deserialize(jsonString: string, filename?: string): T | undefined; /** * From string to object * @param jsonString json string to turn into object @@ -48,16 +48,17 @@ export declare class JsonUtil { * @param options Parsing options * @returns object */ - deserializeJsonC(jsonString: string, filename?: string, options?: IParseOptions): T; - deserializeJson5(jsonString: string, filename?: string): T; - deserializeWithCacheCheckAsync(jsonString: string, filePath: string): Promise; + deserializeJsonC(jsonString: string, filename?: string, options?: IParseOptions): T | undefined; + deserializeJson5(jsonString: string, filename?: string): T | undefined; + deserializeWithCacheCheckAsync(jsonString: string, filePath: string): Promise; /** - * From json string to object + * Take json from file and convert into object + * Perform valadation on json during process if json file has not been processed before * @param jsonString String to turn into object * @param filePath Path to json file being processed * @returns Object */ - deserializeWithCacheCheck(jsonString: string, filePath: string): T; + deserializeWithCacheCheck(jsonString: string, filePath: string): T | undefined; /** * Create file if nothing found * @param jsonCachePath path to cache diff --git a/TypeScript/24WebSocket/types/utils/MathUtil.d.ts b/TypeScript/24WebSocket/types/utils/MathUtil.d.ts index 4acfeaf..fdf9a17 100644 --- a/TypeScript/24WebSocket/types/utils/MathUtil.d.ts +++ b/TypeScript/24WebSocket/types/utils/MathUtil.d.ts @@ -49,5 +49,5 @@ export declare class MathUtil { * @param {array} y support points in y (of same length as x) * @return {number} y(xp) */ - interp1(xp: number, x: number[], y: number[]): number; + interp1(xp: number, x: number[], y: number[]): number | undefined; } diff --git a/TypeScript/24WebSocket/types/utils/ObjectId.d.ts b/TypeScript/24WebSocket/types/utils/ObjectId.d.ts index 309354f..91f64d3 100644 --- a/TypeScript/24WebSocket/types/utils/ObjectId.d.ts +++ b/TypeScript/24WebSocket/types/utils/ObjectId.d.ts @@ -1,5 +1,5 @@ /// -import { TimeUtil } from "@spt-aki/utils/TimeUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; export declare class ObjectId { protected timeUtil: TimeUtil; constructor(timeUtil: TimeUtil); diff --git a/TypeScript/24WebSocket/types/utils/RagfairOfferHolder.d.ts b/TypeScript/24WebSocket/types/utils/RagfairOfferHolder.d.ts index b95e54a..71cb4aa 100644 --- a/TypeScript/24WebSocket/types/utils/RagfairOfferHolder.d.ts +++ b/TypeScript/24WebSocket/types/utils/RagfairOfferHolder.d.ts @@ -1,15 +1,17 @@ -import { RagfairServerHelper } from "@spt-aki/helpers/RagfairServerHelper"; -import { IRagfairOffer } from "@spt-aki/models/eft/ragfair/IRagfairOffer"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { RagfairServerHelper } from "@spt/helpers/RagfairServerHelper"; +import { IRagfairOffer } from "@spt/models/eft/ragfair/IRagfairOffer"; export declare class RagfairOfferHolder { protected maxOffersPerTemplate: number; protected ragfairServerHelper: RagfairServerHelper; + protected profileHelper: ProfileHelper; protected offersById: Map; protected offersByTemplate: Map>; protected offersByTrader: Map>; - constructor(maxOffersPerTemplate: number, ragfairServerHelper: RagfairServerHelper); - getOfferById(id: string): IRagfairOffer; - getOffersByTemplate(templateId: string): Array; - getOffersByTrader(traderId: string): Array; + constructor(maxOffersPerTemplate: number, ragfairServerHelper: RagfairServerHelper, profileHelper: ProfileHelper); + getOfferById(id: string): IRagfairOffer | undefined; + getOffersByTemplate(templateId: string): Array | undefined; + getOffersByTrader(traderId: string): Array | undefined; getOffers(): Array; addOffers(offers: Array): void; addOffer(offer: IRagfairOffer): void; diff --git a/TypeScript/24WebSocket/types/utils/RandomUtil.d.ts b/TypeScript/24WebSocket/types/utils/RandomUtil.d.ts index 39fe482..49f242d 100644 --- a/TypeScript/24WebSocket/types/utils/RandomUtil.d.ts +++ b/TypeScript/24WebSocket/types/utils/RandomUtil.d.ts @@ -1,6 +1,6 @@ -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ICloner } from "@spt-aki/utils/cloners/ICloner"; -import { MathUtil } from "@spt-aki/utils/MathUtil"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { MathUtil } from "@spt/utils/MathUtil"; /** * Array of ProbabilityObjectArray which allow to randomly draw of the contained objects * based on the relative probability of each of its elements. @@ -44,7 +44,7 @@ export declare class ProbabilityObjectArray extends Array extends Array { key: K; relativeProbability: number; - data: V; + data?: V; /** * Constructor for the ProbabilityObject * @param {string} key The key of the element diff --git a/TypeScript/24WebSocket/types/utils/TimeUtil.d.ts b/TypeScript/24WebSocket/types/utils/TimeUtil.d.ts index 2b844ba..6c14b9d 100644 --- a/TypeScript/24WebSocket/types/utils/TimeUtil.d.ts +++ b/TypeScript/24WebSocket/types/utils/TimeUtil.d.ts @@ -42,6 +42,11 @@ export declare class TimeUtil { * @returns {number} The current timestamp in seconds since the Unix epoch in UTC. */ getTimestamp(): number; + /** + * Get timestamp of today + passed in day count + * @param daysFromNow Days from now + */ + getTimeStampFromNowDays(daysFromNow: number): number; /** * Gets the current time in UTC in a format suitable for mail in EFT. * diff --git a/TypeScript/24WebSocket/types/utils/VFS.d.ts b/TypeScript/24WebSocket/types/utils/VFS.d.ts index d880bf5..6287a2f 100644 --- a/TypeScript/24WebSocket/types/utils/VFS.d.ts +++ b/TypeScript/24WebSocket/types/utils/VFS.d.ts @@ -2,14 +2,14 @@ /// import "reflect-metadata"; import fs from "node:fs"; -import { IAsyncQueue } from "@spt-aki/models/spt/utils/IAsyncQueue"; +import { IAsyncQueue } from "@spt/models/spt/utils/IAsyncQueue"; export declare class VFS { protected asyncQueue: IAsyncQueue; accessFilePromisify: (path: fs.PathLike, mode?: number) => Promise; copyFilePromisify: (src: fs.PathLike, dst: fs.PathLike, flags?: number) => Promise; mkdirPromisify: (path: fs.PathLike, options: fs.MakeDirectoryOptions & { recursive: true; - }) => Promise; + }) => Promise; readFilePromisify: (path: fs.PathLike) => Promise; writeFilePromisify: (path: fs.PathLike, data: string, options?: any) => Promise; readdirPromisify: (path: fs.PathLike, options?: BufferEncoding | { @@ -49,7 +49,7 @@ export declare class VFS { protected lockFileSync(filepath: any): () => void; protected checkFileSync(filepath: any): boolean; protected unlockFileSync(filepath: any): void; - getFileExtension(filepath: string): string; + getFileExtension(filepath: string): string | undefined; stripExtension(filepath: string): string; minifyAllJsonInDirRecursive(filepath: string): Promise; minifyAllJsonInDirRecursiveAsync(filepath: string): Promise; diff --git a/TypeScript/24WebSocket/types/utils/Watermark.d.ts b/TypeScript/24WebSocket/types/utils/Watermark.d.ts index eb24706..947ff19 100644 --- a/TypeScript/24WebSocket/types/utils/Watermark.d.ts +++ b/TypeScript/24WebSocket/types/utils/Watermark.d.ts @@ -1,7 +1,7 @@ -import { ICoreConfig } from "@spt-aki/models/spt/config/ICoreConfig"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; -import { ConfigServer } from "@spt-aki/servers/ConfigServer"; -import { LocalisationService } from "@spt-aki/services/LocalisationService"; +import { ICoreConfig } from "@spt/models/spt/config/ICoreConfig"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; +import { ConfigServer } from "@spt/servers/ConfigServer"; +import { LocalisationService } from "@spt/services/LocalisationService"; export declare class WatermarkLocale { protected localisationService: LocalisationService; protected description: string[]; @@ -16,11 +16,11 @@ export declare class Watermark { protected logger: ILogger; protected configServer: ConfigServer; protected localisationService: LocalisationService; - protected watermarkLocale?: WatermarkLocale; - protected akiConfig: ICoreConfig; + protected watermarkLocale: WatermarkLocale; + protected sptConfig: ICoreConfig; protected text: string[]; protected versionLabel: string; - constructor(logger: ILogger, configServer: ConfigServer, localisationService: LocalisationService, watermarkLocale?: WatermarkLocale); + constructor(logger: ILogger, configServer: ConfigServer, localisationService: LocalisationService, watermarkLocale: WatermarkLocale); initialize(): void; /** * Get a version string (x.x.x) or (x.x.x-BLEEDINGEDGE) OR (X.X.X (18xxx)) diff --git a/TypeScript/24WebSocket/types/utils/cloners/JsonCloner.d.ts b/TypeScript/24WebSocket/types/utils/cloners/JsonCloner.d.ts index 2353d90..130dadb 100644 --- a/TypeScript/24WebSocket/types/utils/cloners/JsonCloner.d.ts +++ b/TypeScript/24WebSocket/types/utils/cloners/JsonCloner.d.ts @@ -1,4 +1,4 @@ -import type { ICloner } from "@spt-aki/utils/cloners/ICloner"; +import type { ICloner } from "@spt/utils/cloners/ICloner"; export declare class JsonCloner implements ICloner { clone(obj: T): T; } diff --git a/TypeScript/24WebSocket/types/utils/cloners/RecursiveCloner.d.ts b/TypeScript/24WebSocket/types/utils/cloners/RecursiveCloner.d.ts index e38fbe5..9ea2882 100644 --- a/TypeScript/24WebSocket/types/utils/cloners/RecursiveCloner.d.ts +++ b/TypeScript/24WebSocket/types/utils/cloners/RecursiveCloner.d.ts @@ -1,4 +1,4 @@ -import type { ICloner } from "@spt-aki/utils/cloners/ICloner"; +import type { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RecursiveCloner implements ICloner { private static primitives; clone(obj: T): T; diff --git a/TypeScript/24WebSocket/types/utils/cloners/StructuredCloner.d.ts b/TypeScript/24WebSocket/types/utils/cloners/StructuredCloner.d.ts index 789cb6d..6401443 100644 --- a/TypeScript/24WebSocket/types/utils/cloners/StructuredCloner.d.ts +++ b/TypeScript/24WebSocket/types/utils/cloners/StructuredCloner.d.ts @@ -1,4 +1,4 @@ -import type { ICloner } from "@spt-aki/utils/cloners/ICloner"; +import type { ICloner } from "@spt/utils/cloners/ICloner"; export declare class StructuredCloner implements ICloner { clone(obj: T): T; } diff --git a/TypeScript/24WebSocket/types/utils/collections/lists/LinkedList.d.ts b/TypeScript/24WebSocket/types/utils/collections/lists/LinkedList.d.ts index 6a084fa..3c35a5a 100644 --- a/TypeScript/24WebSocket/types/utils/collections/lists/LinkedList.d.ts +++ b/TypeScript/24WebSocket/types/utils/collections/lists/LinkedList.d.ts @@ -20,35 +20,35 @@ export declare class LinkedList { /** * Returns the first element's value. */ - getHead(): T; + getHead(): T | undefined; /** * Finds the element from the list at the given index and returns it's value. */ - get(idx: number): T; + get(idx: number): T | undefined; /** * Returns the last element's value. */ - getTail(): T; + getTail(): T | undefined; /** * Finds and removes the first element from a list that has a value equal to the given value, returns it's value if it successfully removed it. */ - remove(value: T): T; + remove(value: T): T | undefined; /** * Removes the first element from the list and returns it's value. If the list is empty, undefined is returned and the list is not modified. */ - shift(): T; + shift(): T | undefined; /** * Removes the element from the list at the given index and returns it's value. */ - removeAt(idx: number): T; + removeAt(idx: number): T | undefined; /** * Removes the last element from the list and returns it's value. If the list is empty, undefined is returned and the list is not modified. */ - pop(): T; + pop(): T | undefined; /** * Returns an iterable of index, value pairs for every entry in the list. */ - entries(): IterableIterator<[number, T]>; + entries(): IterableIterator<[number, T | undefined]>; /** * Returns an iterable of values in the list. */ diff --git a/TypeScript/24WebSocket/types/utils/collections/queue/Queue.d.ts b/TypeScript/24WebSocket/types/utils/collections/queue/Queue.d.ts index 8ea3d32..80514f4 100644 --- a/TypeScript/24WebSocket/types/utils/collections/queue/Queue.d.ts +++ b/TypeScript/24WebSocket/types/utils/collections/queue/Queue.d.ts @@ -13,9 +13,9 @@ export declare class Queue { /** * Removes the first element from the queue and returns it's value. If the queue is empty, undefined is returned and the queue is not modified. */ - dequeue(): T; + dequeue(): T | undefined; /** * Returns the first element's value. */ - peek(): T; + peek(): T | undefined; } diff --git a/TypeScript/24WebSocket/types/utils/logging/AbstractWinstonLogger.d.ts b/TypeScript/24WebSocket/types/utils/logging/AbstractWinstonLogger.d.ts index 05d5afe..7098f85 100644 --- a/TypeScript/24WebSocket/types/utils/logging/AbstractWinstonLogger.d.ts +++ b/TypeScript/24WebSocket/types/utils/logging/AbstractWinstonLogger.d.ts @@ -1,12 +1,12 @@ /// import fs from "node:fs"; import winston from "winston"; -import { Daum } from "@spt-aki/models/eft/itemEvent/IItemEventRouterRequest"; -import { LogBackgroundColor } from "@spt-aki/models/spt/logging/LogBackgroundColor"; -import { LogTextColor } from "@spt-aki/models/spt/logging/LogTextColor"; -import { SptLogger } from "@spt-aki/models/spt/logging/SptLogger"; -import { IAsyncQueue } from "@spt-aki/models/spt/utils/IAsyncQueue"; -import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; +import { Daum } from "@spt/models/eft/itemEvent/IItemEventRouterRequest"; +import { LogBackgroundColor } from "@spt/models/spt/logging/LogBackgroundColor"; +import { LogTextColor } from "@spt/models/spt/logging/LogTextColor"; +import { SptLogger } from "@spt/models/spt/logging/SptLogger"; +import { IAsyncQueue } from "@spt/models/spt/utils/IAsyncQueue"; +import { ILogger } from "@spt/models/spt/utils/ILogger"; export declare abstract class AbstractWinstonLogger implements ILogger { protected asyncQueue: IAsyncQueue; protected showDebugInConsole: boolean; diff --git a/TypeScript/24WebSocket/types/utils/logging/WinstonMainLogger.d.ts b/TypeScript/24WebSocket/types/utils/logging/WinstonMainLogger.d.ts index 53cd9d3..8a634b2 100644 --- a/TypeScript/24WebSocket/types/utils/logging/WinstonMainLogger.d.ts +++ b/TypeScript/24WebSocket/types/utils/logging/WinstonMainLogger.d.ts @@ -1,5 +1,5 @@ -import { IAsyncQueue } from "@spt-aki/models/spt/utils/IAsyncQueue"; -import { AbstractWinstonLogger } from "@spt-aki/utils/logging/AbstractWinstonLogger"; +import { IAsyncQueue } from "@spt/models/spt/utils/IAsyncQueue"; +import { AbstractWinstonLogger } from "@spt/utils/logging/AbstractWinstonLogger"; export declare class WinstonMainLogger extends AbstractWinstonLogger { protected asyncQueue: IAsyncQueue; constructor(asyncQueue: IAsyncQueue); diff --git a/TypeScript/24WebSocket/types/utils/logging/WinstonRequestLogger.d.ts b/TypeScript/24WebSocket/types/utils/logging/WinstonRequestLogger.d.ts index 45bc436..0988b6f 100644 --- a/TypeScript/24WebSocket/types/utils/logging/WinstonRequestLogger.d.ts +++ b/TypeScript/24WebSocket/types/utils/logging/WinstonRequestLogger.d.ts @@ -1,5 +1,5 @@ -import { IAsyncQueue } from "@spt-aki/models/spt/utils/IAsyncQueue"; -import { AbstractWinstonLogger } from "@spt-aki/utils/logging/AbstractWinstonLogger"; +import { IAsyncQueue } from "@spt/models/spt/utils/IAsyncQueue"; +import { AbstractWinstonLogger } from "@spt/utils/logging/AbstractWinstonLogger"; export declare class WinstonRequestLogger extends AbstractWinstonLogger { protected asyncQueue: IAsyncQueue; constructor(asyncQueue: IAsyncQueue);